5 votes

Comment utiliser std::wifstream pour lire son contenu en tant que std::wstring

Je suis en train d'essayer ceci :

std::wstringstream wstrStream;
std::wifstream wifStream(str.c_str());
wifStream >> wstrStream;

mais j'ai obtenu cette erreur de compilation :

     erreur C2664 : 'std::basic_istream<_Elem,_Traits>::_Myt &std::basic_istream<_Elem,_Traits>::operator >>
(std::basic_istream<_Elem,_Traits>::_Myt &(__cdecl *)
(std::basic_istream<_Elem,_Traits>::_Myt &))' : impossible de convertir le paramètre 1 de
'std::wstringstream' en 'std::basic_istream<_Elem,_Traits>::_Myt &(__cdecl *)
(std::basic_istream<_Elem,_Traits>::_Myt &)'
            avec
            [
                _Elem=wchar_t,
                _Traits=std::char_traits
            ]
            et
            [
                _Elem=wchar_t,
                _Traits=std::char_traits
            ]

Je comprends que l'opérateur >> n'est pas implémenté pour wchar_t.

J'ai trouvé peu de documentation et de références à std::wifstream. Comment l'utiliseriez-vous ?

6voto

Steve M Points 4137

L'opérateur >> n'est pas défini pour deux flux. Si vous voulez lire une chaîne délimitée par des espaces blancs à partir du fichier, utilisez

std::wstring s;
wifStream >> s;

Si vous voulez copier l'intégralité du fichier dans le stringstream, utilisez

wstrStream << wifStream.rdbuf();

2voto

Puppy Points 90818

Vous n'avez pas besoin d'utiliser un wstringstream ici - le wifstream est un wstringstream sous-jacent. Il vous suffit d'extraire directement dans un std::wstring.

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