代码之家  ›  专栏  ›  技术社区  ›  Stephane Rolland

如何使用std::wifstream作为std::wstring读取其内容

  •  3
  • Stephane Rolland  · 技术社区  · 14 年前

    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没有实施operator>>。

    你会怎么用?

    2 回复  |  直到 14 年前
        1
  •  6
  •   Steve M    14 年前

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

    std::wstring s;
    wifStream >> s;
    

    如果要将整个文件复制到stringstream中,请使用

    wstrStream << wifStream.rdbuf();
    
        2
  •  2
  •   Puppy    14 年前

    您不需要在这里的任何地方使用wstringstream-wifsstream是一个在引擎盖下的wstringstream。您只需要直接提取到std::wstring中。

    推荐文章