Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C+中使用UTF-8字符串和字符+; 我正在研究一个项目,它按字符按UTF-8字符串工作,但是我无法找到一种在C++中用这种方式工作UTF-8字符串的方法。_C++_Text_Utf - Fatal编程技术网

在C+中使用UTF-8字符串和字符+; 我正在研究一个项目,它按字符按UTF-8字符串工作,但是我无法找到一种在C++中用这种方式工作UTF-8字符串的方法。

在C+中使用UTF-8字符串和字符+; 我正在研究一个项目,它按字符按UTF-8字符串工作,但是我无法找到一种在C++中用这种方式工作UTF-8字符串的方法。,c++,text,utf,C++,Text,Utf,我需要的是: 字符串必须是UTF-8,因为字符串不限于英语字母 按原样存储和检索它们是不够的,因为我将逐个字符地处理它们并对它们进行处理 一个字符一个字符地访问它们,并且能够将它们与其他UTF-8字符进行比较是一项要求 任何C++(不管98/11/14)特性或库的建议都很受欢迎。 不使用Boost的附加点。我倾向于在没有外部依赖的情况下开发工具。C++因对unicode开箱即用的支持非常差而臭名昭著。因此,最好的选择是使用类似于或boost的库 友好建议: 我倾向于开发没有外部依赖的工具 你

我需要的是:

  • 字符串必须是UTF-8,因为字符串不限于英语字母
  • 按原样存储和检索它们是不够的,因为我将逐个字符地处理它们并对它们进行处理
  • 一个字符一个字符地访问它们,并且能够将它们与其他UTF-8字符进行比较是一项要求

任何C++(不管98/11/14)特性或库的建议都很受欢迎。


不使用Boost的附加点。我倾向于在没有外部依赖的情况下开发工具。

C++因对unicode开箱即用的支持非常差而臭名昭著。因此,最好的选择是使用类似于或boost的库

友好建议:

我倾向于开发没有外部依赖的工具


你需要证明这句话的正确性,否则,如果这是你的任意规则,你就限制了自己。与语言一样,库也是工具。选择要使用的工具需要进行分析,并将其优点与缺点进行权衡。

您的意思是,使用代码点(与实际的
char
s–即字节相反)?对以上答案的一点补充。我建议你先读,然后可能读,还有。了解东西的实际工作原理总是很好的,尤其是当它是软件的重要组成部分时。虽然您最终肯定会使用ICU:-)

但是您可以使用
宽字符
(或者
多字节
)来处理Unicode

是对 CARS <代码> > /P>的C++库函数的总结


<> P>也看到了国际化标准,如I18N和CF < /P >,您是否已经听说过?这个答案(以及它引用的一个)应该提供您所需要的:可能的重复标准C++已经有<代码> UTF-8/COD> >代码> UCS-16<代码> /UTF-32 < /Cord>转换器,不需要外部库。@库巴伯,我想要字符,不是那个特殊字符的字节。谢谢你的建议!由于各种原因,我喜欢使用可以完全嵌入到源代码树中的库。首先,它消除了安装大型库的开发包只是为了编译(我的)一个小实用程序的负担,然后它消除了代码维护的负担,以便在库的发展过程中保持库的兼容性。最后,它使该工具更具可移植性,因为我并不总是有机会安装大量的开发包来编译我的工具。然而,最好的方法是使用boost或其他所谓的大库,我很乐意在文章末尾使用它day@bayindirh现在可以使用VCPKG()来构建和集成几乎所有的C++库。它已经得到了广泛的关注,并且对于使用第三方LIB的快速原型开发和企业场景(请参见他们的
导出
命令)@bayindirh-solid-argument,它都同样适用。如果您知道自己在做什么,看起来您是这样做的,那么您是唯一能够判断自己实现utf8支持是否值得的法官。@bolov,谢谢。我将查看
libICU
和其他,如果我能找到一个可嵌入的库(如
eigen
easylogging++
等),我将毫不犹豫地使用它。这是一个个人项目,因此没有时间压力。我将努力在挑战(不是在这里发明的)和实用主义之间取得一个健康的平衡。实际上,我需要接触角色本身。我要处理的文本保证有两个字节的unicode字符,我需要访问它们而不看到它们的不同字节。由于C++可以在 STD::String 中存储和读取Unicode字符串,通过将字节内部划分,并对这些二进制值进行冷漠的行为,我使用代码点来明确指出,我需要访问两个字节字符作为字符本身,而不是这两个字节字符的单独字节。我明白你的意思,只是表达得不太好。我所说的实际字符是指
char
s–字节值。编辑了答案。