我正在尝试这个:
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>
]
我理解运算符&gt;&gt;没有为wchar_t实现。
我发现很少有文档和对std :: wifstream的引用。 你会怎么用?
答案 0 :(得分:5)
运营商&gt;&gt;没有为两个流定义。如果要从文件中读取以空格分隔的字符串,请使用
std::wstring s;
wifStream >> s;
如果您要将整个文件复制到字符串流中,请使用
wstrStream << wifStream.rdbuf();
答案 1 :(得分:2)
你不需要在这里任何地方使用wstringstream - wifstream是一个wstringstream。您只需要直接提取到std :: wstring。