jjzjj

c++ - utf8 <-> utf16 : codecvt poor performance

我正在研究我的一些旧的(并且专门面向win32的)东西并考虑使它更现代/可移植-即在C++11中重新实现一些可广泛重用的部分。这些部分之一是utf8和utf16之间的转换。在Win32API中,我正在使用MultiByteToWideChar/WideCharToMultiByte,尝试使用此处的示例代码将这些内容移植到C++11:https://stackoverflow.com/a/14809553.结果是发布版本(由MSVS2013编译,在Corei73610QM上运行)stdlib=1587.2msWin32=127.2ms调试构建stdlib=5733.8msWin32=12

c++ - 为什么这个专门用于 basic_ifstream 模板的 char_traits<uint8_t> 和 codecvt<uint8_t> 会抛出 std::bad_cast?

Therearealreadyquestions在Stackoverflow上询问为什么basic_fstream不起作用。答案说char_traits仅专门用于char和wchar_t(加上char16_t,char32_t在C++11中)你应该坚持使用basic_fstream读取二进制数据并根据需要进行转换。该死的,这还不够好!:)没有一个答案(我能找到)说如何特化char_traits并将其与basic_fstream一起使用模板,或者如果它甚至可能的话。所以我想我会尝试自己实现它。在Windows764位上使用VisualStudioExpress2013RC和在Kubunt

c++ - 如何编写 std::codecvt 方面?

如何编写std::codecvt方面?我想写从UTF-16到UTF-8的代码,从UTF-16到系统当前代码页(windows,所以CP_ACP),以及系统的OEM代码页(windows,所以CP_OEM)。首选跨平台,但Windows上的MSVC也可以。有没有关于如何正确使用这个类的任何类型的教程或任何类似的东西? 最佳答案 我写过一个基于iconv的。它可以在Windows或任何POSIXOS上使用。(您显然需要与iconv链接)。Enjoy“如何做”问题的答案是跟随thecodecvtreference.两年前,我在互联网上找不

c++ - 被 Unicode、Boost、C++、codecvts 难倒

在C++中,我想使用Unicode来做事。因此,在掉进Unicode的兔子洞之后,我最终陷入了困惑、头痛和语言环境的火车残骸中。但在Boost中,我遇到了一个不幸的问题,即尝试使用Unicode文件路径并尝试将Boost程序选项库与Unicode输入一起使用。我已经阅读了有关语言环境、codecvts、Unicode编码和Boost主题的所有内容。我目前的尝试是使用一个codecvt,它接受一个UTF-8字符串并将其转换为平台的编码(POSIX上的UTF-8,Windows上的UTF-16),我一直在尝试避免wchar_t.我实际上得到的最接近的是尝试使用Boost.Locale执行此

c++ - codecvt 不是标准头吗?

此代码使用VisualC++11编译并在Windows7上按预期运行,但使用Windows7上的MinGW4.7.0或Linux上的gcc4.8.0编译失败。使用-std=c++11标志编译#include#include//convertUTF-8stringtowstringstd::wstringutf8_to_wstring(conststd::string&str){std::wstring_convert>myconv;returnmyconv.from_bytes(str);}//convertwstringtoUTF-8stringstd::stringwstring_

c++ - 不推荐使用的 header <codecvt> 替换

有点前景:我的任务需要将UTF-8XML文件转换为UTF-16(当然,带有正确的标题)。所以我搜索了将UTF-8转换为UTF-16的常用方法,发现应该使用中的模板。.但现在是deprecated,不知道新的常见的做同样任务的方法是什么?(完全不介意使用Boost,但除此之外,我更喜欢尽可能接近标准库。) 最佳答案 别担心。根据thesameinformationsource:thislibrarycomponentshouldberetiredtoAnnexD,alongside,untilasuitablereplacementi

c++ - 带有 char16_t 或 char32_t 的 Visual Studio C++ 2015 std::codecvt

这段代码在VS2013下编译OK:std::stringUnicode::utf16_to_utf8(std::u16stringutf16_string){std::wstring_convert,char16_t>convert;returnconvert.to_bytes(utf16_string);}现在有了VS2015,我得到:1>unicode.obj:errorLNK2001:unresolvedexternalsymbol"__declspec(dllimport)public:staticclassstd::locale::idstd::codecvt::id"(__

c++ - 带有 char16_t 或 char32_t 的 Visual Studio C++ 2015 std::codecvt

这段代码在VS2013下编译OK:std::stringUnicode::utf16_to_utf8(std::u16stringutf16_string){std::wstring_convert,char16_t>convert;returnconvert.to_bytes(utf16_string);}现在有了VS2015,我得到:1>unicode.obj:errorLNK2001:unresolvedexternalsymbol"__declspec(dllimport)public:staticclassstd::locale::idstd::codecvt::id"(__
12