MFC

From Mesdoc

(Difference between revisions)
(Quelles sont les différentes méthodes pour manipuler un fichier ?)
 
(One intermediate revision not shown)
Line 1: Line 1:
-
 
http://c.developpez.com/faq/vc/?page=Fichiers
http://c.developpez.com/faq/vc/?page=Fichiers
Line 16: Line 15:
Globalement, on choisit d'utiliser CFile lorsqu'on utilise des fichiers en mode binaire et CStdioFile pour des fichiers en mode texte.
Globalement, on choisit d'utiliser CFile lorsqu'on utilise des fichiers en mode binaire et CStdioFile pour des fichiers en mode texte.
L'API Win32 manipule les fichiers comme étant des fichiers binaires.
L'API Win32 manipule les fichiers comme étant des fichiers binaires.
 +
 +
===Comment déplacer le pointeur de fichier ?===
 +
 +
API Win32 : on utilise SetFilePointer
 +
 +
SetFilePointer(fichier,NULL,NULL,FILE_END);
 +
 +
CFile et ses dérivées : on utilise Seek, SeekToBegin ou SeekToEnd
 +
 +
cfile.SeekToEnd();
 +
 +
 +
===Comment lire et écrire dans un fichier en mode texte ?===
 +
 +
CStdioFile f1 ("c:\\\\test.txt", CFile::modeCreate | CFile::modeWrite | CFile::typeText );
 +
f1.WriteString("premiere ligne\
 +
");
 +
f1.WriteString("deuxieme ligne");
 +
f1.Close();
 +
 +
CStdioFile f2 ("c:\\\\test.txt", CFile::modeRead | CFile::typeText );
 +
CString s1, s2;
 +
f2.ReadString(s1); // s1 contient "premiere ligne"
 +
f2.ReadString(s2); // s2 contient "deuxieme ligne"
 +
f2.Close();
 +
 +
Nb : pour ajouter un caractère de séparation de ligne, on utilise \
 +
(0x0A).
 +
La fonction WriteString le transforme alors en 0x0D, 0x0A. Inversement, lorsqu'on lit la paire 0x0D, 0x0A, la fonction ReadString le transforme en \
 +
(0x0A)

Current revision as of 20:57, 21 August 2006

http://c.developpez.com/faq/vc/?page=Fichiers


Contents

[edit] Quelles sont les différentes méthodes pour manipuler un fichier ?

Pour manipuler un fichier en C/C++ il existe différentes méthodes.

Sous windows, on utilisera directement les API Win32 (CreateFile, ReadFile, ...) ou une surcouche comme les MFC (CFile et ses dérivées)

[edit] Que choisir entre l'API Win32 et la surcouche MFC (CFile, CStdioFile) ?

Tant qu'à utiliser les bibliothèques MFC, il est plus intéressant de privilégier les classes CFile ou CStdioFile qui sont plus faciles à manipuler que les fonctions de l'API. On utilisera les fonctions de l'API que lorsque le projet ne doit pas utiliser les MFC. Globalement, on choisit d'utiliser CFile lorsqu'on utilise des fichiers en mode binaire et CStdioFile pour des fichiers en mode texte. L'API Win32 manipule les fichiers comme étant des fichiers binaires.

[edit] Comment déplacer le pointeur de fichier ?

API Win32 : on utilise SetFilePointer

SetFilePointer(fichier,NULL,NULL,FILE_END);

CFile et ses dérivées : on utilise Seek, SeekToBegin ou SeekToEnd

cfile.SeekToEnd();


[edit] Comment lire et écrire dans un fichier en mode texte ?

CStdioFile f1 ("c:\\\\test.txt", CFile::modeCreate | CFile::modeWrite | CFile::typeText );
f1.WriteString("premiere ligne\

");

f1.WriteString("deuxieme ligne");
f1.Close();
CStdioFile f2 ("c:\\\\test.txt", CFile::modeRead | CFile::typeText );
CString s1, s2;
f2.ReadString(s1); // s1 contient "premiere ligne"
f2.ReadString(s2); // s2 contient "deuxieme ligne"
f2.Close();

Nb : pour ajouter un caractère de séparation de ligne, on utilise \

(0x0A).

La fonction WriteString le transforme alors en 0x0D, 0x0A. Inversement, lorsqu'on lit la paire 0x0D, 0x0A, la fonction ReadString le transforme en \

(0x0A)
Personal tools