Bonjour.
En C, quand je voulais lire ou écrire dans des fichier, j'utilisais des "FILE * fp", des "fopen", des "fgets" et "fputs", etc etc.
En C++, je me suis mis a utiliser des ifstream pour la lecture et des ofstream pour l'ecriture, et tout allait bien jusqu'à ce que je doive utiliser des "wide characters". Comment faire?
En C, je remplacait fgets par fgetws, fputs par fputws, etc...
Mais en C++ je sais pas comment faire? Existe-t-il des wread, wwrite ou autres?
plus précisément, si je veux par exemple lire la premiere lignes d'un fichier, écrit avec des wchar:
1 2 3 4 5 6 7 8 9 10
|
//un buffer pour stocker ce qu'on va lire dans le fichier:
wchar_t pWideCharBuffer[MAX_EVENT_LINE_LENGTH];
//un "inputstream:
std::ifstream fis;
//j'ouvre le fichier:
fis.open(monFichier.txt)
//et maintenant? |
je n'arrive pas a lire une ligne. j'ai pensé utiliser la fonction getline, avec les params suivants:
fis.getline((char*)pWideCharBuffer,MAX_LINE_LENGTH*sizeof(wchar_t));
MAX_LINE_LENGTH est une constante connue, elle vaut le nombre max de caracrtères qu'une ligne peut contenir. je la multiplie par sizeof(wchar_t) puisque la fonction getline remplit un buffer de char et non de wchar_t.
Mais ça ne marche pas, il n'y a rien dans mon buffer. (notons que le premier caractère du fichier vaut 0xFF)
En fait quand je dis qu'il n'y a rien dans mon buffer, c'est plutot que j'essaye d'afficher le contenu du buffer et que rien ne s'affiche, mais c'est peut etre l'affichage qui ne marche pas. j'utilise:
wprintf(L"%s",pWideCharBuffer);
de nouveau, pour afficher un char ou un wchar, en C je passe de printf a wprintf, mais en C++ ? est-ce que "cout" est assez intelligent pour afficher correctement le contenu de ma variable en tenant compte de son type?
merci d'avance
Partager