【问题标题】:how to use std::wifstream for reading its content as a std::wstring如何使用 std::wifstream 将其内容作为 std::wstring 读取
【发布时间】:2011-05-07 06:56:18
【问题描述】:

我正在尝试这个:

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 的文档和参考资料。 你会怎么用呢?

【问题讨论】:

  • std::wstringstream?你的意思是std::wstring?

标签: c++ stl wifstream


【解决方案1】:

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

std::wstring s;
wifStream >> s;

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

wstrStream << wifStream.rdbuf();

【讨论】:

  • 是的 wstrStream &lt;&lt; wifStream.rdbuf(); 似乎是我想要的。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2010-12-20
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    相关资源
    最近更新 更多