C++ - 将istream_iterator与wstringstream一起使用

 向日葵哄子 发布于 2023-02-06 10:51

我正在尝试为我编写的程序添加Unicode支持.我的ASCII代码已编译并具有以下行:

std::stringstream stream("abc");
std::istream_iterator it(stream);

我将其转换为:

std::wstringstream stream(L"abc");
std::istream_iterator it(stream);

我在istream_iterator构造函数中收到以下错误:

error C2664: 'void std::vector<_Ty>::push_back(std::basic_string<_Elem,_Traits,_Alloc> &&)' : cannot convert parameter 1 from 'std::basic_string<_Elem,_Traits,_Alloc>' to 'std::basic_string<_Elem,_Traits,_Alloc> &&'
1>          with
1>          [
1>              _Ty=std::wstring,
1>              _Elem=wchar_t,
1>              _Traits=std::char_traits,
1>              _Alloc=std::allocator
1>          ]
1>          and
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits,
1>              _Alloc=std::allocator
1>          ]
1>          and
1>          [
1>              _Elem=wchar_t,
1>              _Traits=std::char_traits,
1>              _Alloc=std::allocator
1>          ]
1>          Reason: cannot convert from 'std::basic_string<_Elem,_Traits,_Alloc>' to 'std::basic_string<_Elem,_Traits,_Alloc>'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits,
1>              _Alloc=std::allocator
1>          ]
1>          and
1>          [
1>              _Elem=wchar_t,
1>              _Traits=std::char_traits,
1>              _Alloc=std::allocator
1>          ]
1>          No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

将上面的代码转换为Unicode的正确方法是什么?

谢谢.

PS

我正在运行Visual Studio 2012

1 个回答
  • 尝试:

    std::wstringstream stream(L"abc");
    std::istream_iterator<std::wstring, wchar_t> it(stream);
    

    ......看看它是否效果不好.

    关于评论:不,这不适用于UTF-8.它(或多或少)直接从包含UTF-16的文件读入包含UTF-16的字符串.根据编译器及其使用的大小wchar_t,可能是UTF-32,但(可能)不会是UTF-8.

    要从文件中读取UTF-8并转换为UTF-32以供内部使用,您可能需要查看Boost.locale,其中包含一个utf-to-utf codecvt方面.

    2023-02-06 10:54 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有