gpt4 book ai didi

c++ - 将执行字符集字符串转换为UTF-8字符串

转载 作者:太空宇宙 更新时间:2023-11-04 12:46:57 29 4
gpt4 key购买 nike

在我的程序中我有一个 std::string包含使用“执行字符集”(即 not guaranteed to be UTF-8 or even US-ASCII )编码的文本,我想将其转换为 std::string包含相同的文本,但使用 UTF-8 编码。我该怎么做?

我想我需要一个 std::codecvt<char, char, std::mbstate_t>字符转换器对象,但是我在哪里可以找到合适的对象呢?我必须使用什么函数或构造函数?

我假设标准库提供了一些方法(在某处,以某种方式)执行此操作,因为编译器本身必须了解 UTF-8(以支持 UTF-8 字符串文字)和执行字符集。

最佳答案

I guess I need a std::codecvt<char, char, std::mbstate_t> character-converter object, but where can I get hold of a suitable object?

你可以得到一个std::codecvt object 仅作为基类实例(通过从它继承),因为析构函数受到保护。那说不,std::codecvt<char, char, std::mbstate_t>不是您需要的方面,因为它代表身份转换(即根本没有转换)。

目前,C++ 标准库没有在 native (又名执行)字符编码(又名字符集)和 UTF-8 之间进行转换的功能。因此,您可以使用 Unicode 标准自行实现转换:https://www.unicode.org/versions/Unicode11.0.0/UnicodeStandard-11.0.pdf

To use an external library I guess you would need to know the "name" (or ID) of the execution character set. But how would you get that?

也没有相应的标准库函数。例如,在 POSIX 系统上,您可以使用 nl_langinfo(CODESET) .

关于c++ - 将执行字符集字符串转换为UTF-8字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51041467/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com