4

我正在尝试这个:

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 的引用。你将如何使用它?

4

2 回答 2

6

运算符 >> 没有为两个流定义。如果要从文件中读取以空格分隔的字符串,请使用

std::wstring s;
wifStream >> s;

如果您的意思是要将整个文件复制到字符串流中,请使用

wstrStream << wifStream.rdbuf();
于 2010-11-09T14:33:18.103 回答
2

您不需要在此处的任何地方使用 wstringstream - wifstream 是 wstringstream 在引擎盖下。您只需要直接提取到 std::wstring 中。

于 2010-11-09T14:29:59.380 回答