Beaucoup de personne connaissent les std::fstream et son acolyte std::wfstream. Peut-être autant de personnes connaissent l'Unicode.
La class std::fstream qui dérive de std::basic_fstream possède un constructeur prenant comme argument un const char*.
La class std::wfstream quant à elle possède un constructeur prenant comme argument un const char* et non pas un const wchar_t*.
Ce qui est assez gènant.
En effet certain compilateur, dont le miens (visual studio 2005), à modifié le standard et à introduit un constructeur prenant un const wchar_t* pour les std::wfstream. (J'ai vu ça quand j'ai essayé de compiler mon code avec la version précedente de mon compilo : visual studio 2003).
En gros dans 2003 à pas ce constructeur, dans 2005 il y en a un.
Sur le site des mecs qui font le standard, ils disent qu'effectivement, ce n'est pas dans le standard, et que ça le sera peut-être dans la prochaine version.
Et qu'ils n'ont pas voulu faire de constructeur const wchar_t*.
Le pire c'est que dans l'aide de visual ce n'est pas marqué que ce n'est pas standard....
Ma question :
Comment faire du code standard, et ouvrir un flux vers un fichier dont on possède le nom dans un const wchar_t* (ou autre std::wstring, etc...), et sans méthode bourine, genre conversion Unicode vers Ansi.
En gros je ne peux pas trop, help me !!!
Il y avait déjà un problème similaire avec la methode std::exception::what, qui retournait, que l'on soit en unicode ou pas, un const char*.
Partager