75 votes

Comment ouvrir un std::fstream (ofstream ou ifstream) avec un nom de fichier unicode ?

On n'imaginerait pas que quelque chose d'aussi basique que l'ouverture d'un fichier à l'aide de la bibliothèque standard C++ pour une application Windows soit délicat... mais il semble que ce soit le cas. Par Unicode ici, je veux dire UTF-8, mais je peux convertir en UTF-16 ou autre, le but est d'obtenir une instance ofstream à partir d'un nom de fichier Unicode. Avant que je ne bricole ma propre solution, y a-t-il une route préférée ici ? En particulier une solution multiplateforme ?

0 votes

C'est un duplicate question. Voyez si l'une des réponses peut vous aider.

0 votes

Pourquoi n'utilisez-vous pas des types de données comme std::wofstream ? Remarquez le w ¡!

0voto

Andreas Haferburg Points 1960

Si vous utilisez Qt mélangé avec std::ifstream :

return std::wstring(reinterpret_cast<const wchar_t*>(qString.utf16()));

Notez que le std::basic_ifstream n'accepte normalement pas un const w_char* mais dans l'implémentation MS de la STL, c'est le cas. . Avec d'autres implémentations, vous appelleriez probablement qString.utf8() et utiliser le const char* ctor.

0voto

Michael Haephrati Points 145

Utilisez

wfstream

au lieu de

fstream

y

wofstream

au lieu de

ofstream

et ainsi de suite... Vous pouvez trouver ces informations dans le iosfwd fichier d'en-tête.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X