相关疑难解决方法(0)

C++ 11中支持Unicode的程度如何?

我读过并听说C++ 11支持Unicode.关于这一点的一些问题:

  • C++标准库如何支持Unicode?
  • 难道std::string做自己应该?
  • 我该如何使用它?
  • 潜在的问题在哪里?

c++ unicode c++11

176
推荐指数
5
解决办法
7万
查看次数

C++ wchar_t和wstrings有什么"错误"?宽角色有哪些替代方案?

我见过C++社区中的很多人(特别是freenode上的## c ++)对windows api 的使用wstrings和使用感到不满wchar_t.究竟是什么"错误"有wchar_twstring,如果我要支持国际化,有一些什么替代宽字符?

c++ unicode winapi internationalization wstring

81
推荐指数
2
解决办法
3万
查看次数

C++项目类型:unicode vs multi-byte; 利弊

我想知道Stack Overflow社区在使用unicode或多字节字符集创建项目(主要考虑c ++)时的想法.

  • 从一开始就直接使用Unicode是否有优势,这意味着您的所有字符串都将采用宽格式?由于标准使用较大的字符,是否存在性能问题/更大的内存要求?

  • 这种方法有优势吗?某些处理器架构能否更好地处理宽字符?

  • 如果您不打算支持其他语言,是否有任何理由使您的项目成为Unicode?

  • 创建具有多字节字符集的项目有什么理由?

  • 上述所有因素如何在高性能环境(例如现代视频游戏)中发生冲突?

c++ unicode ansi visual-c++

30
推荐指数
5
解决办法
3万
查看次数

寻找如何使用ICU的简单实用的C++示例

我正在寻找关于如何使用ICU的简单实用的C++示例.
ICU主页在这方面没有帮助.
我对Unicode的原因和原因不感兴趣.
少数演示不是自包含的,不是可编译的例子(包含在哪里?)
我正在寻找类似'Hello,World'的内容:
如何打开和读取以UTF-8编码的文件
如何使用STL/Boost字符串函数来操作UTF-8编码的字符串等.

c++ icu

22
推荐指数
2
解决办法
1万
查看次数

如何将UTF-8 std :: string转换为UTF-16 std :: wstring?

如果我有UTF-8 std::string怎么把它转换成UTF-16 std::wstring?实际上,我想比较两个波斯语.

c++ string encoding

22
推荐指数
2
解决办法
3万
查看次数

在C++下处理Unicode字符串的最佳多平台方式是什么?

我知道已经有StackOverflow上有关的几个问题std::stringstd::wstring或类似,但没有人提出了一个完整的解决方案.

为了获得一个好的答案,我应该定义要求:

  • 多平台使用,必须适用于Windows,OS X和Linux
  • 最小的努力用于转换到/从平台特定的Unicode字符串CFStringRef,wchar_t *,char*为UTF-8或其他类型的,因为它们是由OS API必需的.备注:我不需要代码页转换支持,因为我希望在所有支持的操作系统上只使用Unicode兼容的函数.
  • 如果需要一个外部库,这个应该是开源的,并且在非常自由的许可下,如BSD但不是LGPL.
  • 能够使用printf格式语法或类似.
  • 简单的字符串分配/释放方式
  • 性能不是很重要,因为我假设Unicode字符串仅用于应用程序UI.
  • 一些例子可能会受到赞赏

我非常感谢每个答案提出一个解决方案,通过这样做,人们可以投票选择他们喜欢的替代方案.如果您有多个替代方案,请添加另一个答案.

请说明一些对你有用的东西.

相关问题:

c++ string unicode multiplatform wstring

19
推荐指数
2
解决办法
1785
查看次数

C++ std :: string的长度,以字节为单位

我在弄清楚确切的语义时遇到了一些麻烦std::string.length().该文件明确指出,length()返回字符的字符串中而且数量不是字节数.我想知道在哪些情况下这实际上有所作为.

特别是,这只与非char实例化相关,std::basic_string<>或者在存储具有多字节字符的UTF-8字符串时是否也会遇到麻烦?标准是否允许length()UTF8感知?

c++ string stdstring

14
推荐指数
2
解决办法
2万
查看次数

Visual C++:将传统的C和C++字符串代码迁移到Unicode世界

我看到Visual Studio 2008及更高版本现在开始使用字符集设置为Unicode的新解决方案.我的旧C++代码只处理英文ASCII文本,并且满是:

  • 文字字符串就像 "Hello World"
  • char 类型
  • char * 指向已分配的C字符串的指针
  • STL string 类型
  • 转换STL string为C字符串,反之亦然,使用STL string构造函数(接受const char *)和STL string.c_str()

    1. 我需要对迁移此代码进行哪些更改,以便它在Visual Studio Unicode和Unicode启用的库的生态系统中工作?(我不需要它同时使用ASCII和Unicode,它可以是纯Unicode.)

    2. 是否也可以以独立于平台的方式执行此操作?(即,不使用Microsoft类型.)

我看到很多广泛的字符和Unicode类型和转换散落在周围,因此我的困惑.(例如:wchar_t,TCHAR,_T,_TEXT,TEXT等)

c c++ string unicode

13
推荐指数
3
解决办法
1万
查看次数

在C++中处理UTF-8

要了解C++是否是我的项目的正确语言,我想测试UTF-8功能.根据参考资料,我建立了这个例子:

#include <string>
#include <iostream>

using namespace std;

int main() {
    wstring str;
    while(getline(wcin, str)) {
        wcout << str << endl;
        if(str.empty()) break;
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是当我输入一个UTF-8字符时,它行为不端:

$ > ./utf8 
Hello
Hello
für
f
$ >
Run Code Online (Sandbox Code Playgroud)

它不仅不会打印ü,而且会立即退出.gdb告诉我没有崩溃,但正常退出,但我发现很难相信.

c++ linux stl utf-8 wstring

12
推荐指数
2
解决办法
1万
查看次数

在C和C++中正确使用字符串存储

流行的软件开发人员和公司(Joel Spolsky,Fog Creek软件)在编写C或C++代码时倾向于使用wchar_t进行Unicode字符存储.何时以及如何在良好的编码实践中使用charwchar_t

在编写利用Unicode的软件时,我对POSIX合规性特别感兴趣.

使用wchar_t时,您可以在每个字符或每个数组元素的基础上查找宽字符数组中的字符:

/* C code fragment */
const wchar_t *overlord = L"ov€rlord";
if (overlord[2] == L'€')
    wprintf(L"Character comparison on a per-character basis.\n");
Run Code Online (Sandbox Code Playgroud)

如何在使用char时比较unicode字节(或字符)?

到目前为止,我在C 中比较字符串和char类型字符的首选方法通常如下所示:

/* C code fragment */
const char *mail[] = { "ov€rlord@masters.lt", "ov€rlord@masters.lt" };
if (mail[0][2] == mail[1][2] && mail[0][3] == mail[1][3] && mail[0][3] == mail[1][3])
    printf("%s\n%zu", *mail, strlen(*mail));
Run Code Online (Sandbox Code Playgroud)

此方法扫描等效字节的字节.Unicode欧元符号占用3个字节.因此,需要比较三个char数组字节以了解Unicode字符是否匹配.通常,您需要知道要比较的字符或字符串的大小以及它为解决方案生成的位数.这根本不是处理Unicode的好方法. …

c c++ unicode posix character-encoding

10
推荐指数
1
解决办法
722
查看次数