草庐IT

unicode_normalize

全部标签

c++ - 根据 MSVC++ 中的 unicode 设置自动在 std::string 和 std::wstring 之间切换?

我正在编写一个DLL,并希望能够在MSVC++2010中的unicode和多字节设置之间切换。例如,我使用_T("string")和LPCTSTR和WIN32_FIND_DATA而不是-W和-A版本等等。现在我想让std::strings根据unicode设置在std::string和std::wstring之间变化。那可能吗?否则,这可能最终会变得极其复杂。 最佳答案 为什么不像Win32API那样做:在内部使用宽字符,并提供DoSomethingA函数的字符转换外观,将其输入简单地转换为Unicode。也就是说,您可以像这样定义

c++ - 我的程序如何从 ASCII 切换到 Unicode?

我想用C++编写一个可以在Unix和Windows上运行的程序。该程序应该能够同时使用:Unicode和非Unicode环境。它的行为应该只取决于环境设置。我想要的一个很好的功能是操作从目录中读取的文件名。这些可以是unicode......或不是。实现这一目标的最简单方法是什么? 最佳答案 IwanttowriteaprograminC++thatshouldworkonUnixandWindows.首先,请确保您了解Unix如何支持Unicode与Windows如何支持Unicode之间的区别。在Unicode出现之前,两个平台

c++ - 如何处理 JSON 字符串中的 unicode 值?

我正在用C++编写JSON解析器,在解析JSON字符串时遇到问题:JSON规范声明JSON字符串可以包含以下形式的unicode字符:"herecomesaunicodecharacter:\u05d9!"我的JSON解析器尝试将JSON字符串映射到std::string,因此通常情况下,JSON字符串的一个字符会变成std::string的一个字符。但是对于那些unicode字符,我真的不知道该怎么办:我是否应该像这样将原始字节值放入我的std::string中:std::stringmystr;mystr.push_back('\0x05');mystr.push_back('\0

c++ - 如何判断字体是否支持代理对 Unicode 字符?

我找到了followingmethod确定字体是否支持Unicode-16字符。不幸的是,这不适用于surrogatepairUnicodecharacters,因为WCRANGE结构受GetFontUnicodeRanges支持函数仅返回WCHAR(16位)参数作为输出。这是我正在尝试做的一个例子:LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam){staticHFONThFont=NULL;switch(message){caseWM_CREATE:{LOGFONTlf={0};lf.lfHe

c++ - 使用 Unicode 字符串文字 Stringify 宏

我正在使用这个预处理器宏来“字符串化”并轻松地从定义解析函数返回:#defineSTRINGIFY_RETURN(x)casex:return#x""它在具有普通字符串文字的MBSC环境中就像一个魅力。示例:#defineMY_DEFINE_11#defineMY_DEFINE_22#defineMY_DEFINE_33constchar*GetMyDefineNameA(unsignedintvalue){switch(value){STRINGIFY_RETURN(MY_DEFINE_1);STRINGIFY_RETURN(MY_DEFINE_2);STRINGIFY_RETURN

c++ - 在 C++ 控制台应用程序中使用 Unicode 字体

如何更改C++Windows控制台应用程序中的字体?它似乎没有使用cmd.exe默认使用的字体(Lucida控制台)。当我通过现有的cmd.exe(键入name.exe)运行我的应用程序时,它看起来像这样:http://dathui.mine.nu/konsol3.png这是完全正确的。但是当我单独运行我的应用程序(双击.exe)时,它看起来像这样:http://dathui.mine.nu/konsol2.png.相同的代码,两种不同的外观。所以现在我想知道如何更改字体,无论它如何运行,它总是看起来正确。编辑:好的,更多信息。当我只使用这个小片段时:SetConsoleOutputC

c++ - 打印 Unicode 字符 C++

我正在尝试编写一个简单的命令行应用程序来自学日语,但似乎无法打印Unicode字符。我错过了什么?#includeusingnamespacestd;intmain(){wcout在此示例中,仅显示“按任意键继续”。在VisualC++2013上测试。 最佳答案 这在Windows上并不容易。即使您设法将文本发送到Windows控制台,您仍然需要配置cmd.exe才能显示日文字符。#includeintmain(){std::cout这适用于任何系统:编译器的源代码和执行编码包括字符。输出设备(例如,控制台)期望文本采用与编译器执行

c++ - 在 C++ 源文件中使用 Unicode

我正在处理一个C++源文件,我希望在其中包含一个包含亚洲Unicode字符的带引号的字符串。我在Windows上使用QT,QTCreator开发环境显示Unicode没有问题。QStrings在存储Unicode时也没有问题。当我粘贴我的Unicode时,它​​显示正常,类似于:#defineMY_STRING鸟但是,当我保存时,我可爱的​​Unicode字符都变成了?标记。我尝试打开源文件并将其重新保存为Unicode编码。然后它会在QTCreator中正确显示和保存。然而,在编译时,编译器似乎不知道如何处理它,并抛出大量误导性错误和警告,例如“程序中出现杂散的\255”和“忽略空字

c++ - 如何在 C++11 中正确使用 std::normal_distribution?

我想获得[0.0,1.0]范围内的随机float,所以这些数字中的大部分应该在0.5左右。因此我想出了以下功能:staticstd::random_device__randomDevice;staticstd::mt19937__randomGen(__randomDevice());staticstd::normal_distribution__normalDistribution(0.5,1);//Getanormallydistributedfloatvalueintherange[0,1].inlinefloatGetNormDistrFloat(){floatval=-1;d

c++ - 为什么 printf 不格式化 unicode 参数?

当使用printf将双字节字符串格式化为单字节字符串时:printf("%ls\n",L"s:\\яшертыHello");//%lsforawidestring(%svariesmeaningdependingontheproject'sunicodesettings).很明显,有些字符不能表示为ascii字符,所以有时我会看到双字节字符变成“?”的行为。标记字符。但是,这似乎取决于特定的字符。对于上面的printf,输出是:s:\我希望我能得到这样的东西:s:\??????Hello恐怕我已经失去了这个例子,但我认为当一个字符串遇到unicode字符时,将第一个字符串替换为“?”