как использовать std :: wifstream для чтения его содержимого как std :: wstring - PullRequest
3 голосов
/ 09 ноября 2010

Я пытаюсь это:

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

но я получил эту ошибку компиляции:

     error 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 &))' : cannot convert parameter 1 from
'std::wstringstream' to 'std::basic_istream<_Elem,_Traits>::_Myt &(__cdecl *)
(std::basic_istream<_Elem,_Traits>::_Myt &)'
            with
            [
                _Elem=wchar_t,
                _Traits=std::char_traits<wchar_t>
            ]
            and
            [
                _Elem=wchar_t,
                _Traits=std::char_traits<wchar_t>
            ]

Я понимаю, что оператор >> не реализован для wchar_t.

Я нашел немного документации и ссылок на std :: wifstream.Как бы вы использовали это?

Ответы [ 2 ]

5 голосов
/ 09 ноября 2010

Оператор >> не определен для двух потоков.Если вы хотите прочитать строку с пробелами из файла, используйте

std::wstring s;
wifStream >> s;

Если вы хотите скопировать весь файл в поток строк, используйте

wstrStream << wifStream.rdbuf();
2 голосов
/ 09 ноября 2010

Вам не нужно использовать поток wstring где-либо здесь - поток wstring находится под капотом.Вам просто нужно извлечь непосредственно в std :: wstring.

...