gpt4 book ai didi

java - 在 C++ 中相当于 Java 的 String.getBytes ("UTF-8")?

转载 作者:行者123 更新时间:2023-11-30 02:03:14 27 4
gpt4 key购买 nike

我需要在(非托管)c++ 中实现此 Java 代码:

byte[] b = string.getBytes("UTF8");

我是 C++ 的新手,找不到任何东西可以做到这一点。如果可能,它必须独立于平台。使用 c++11 编译器。

最佳答案

Java String 大致等同于 std::u16stringstd::basic_string 的特化.我建议您尝试类似...

std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> convert;
std::string converted = convert.to_bytes(u"HELLO, WORLD!");
const char *bytes = converted.data();

注意 这依赖于 C++11;您的编译器供应商可能需要一段时间才能完全支持这些功能。

在这里,我们利用新引入的 std::wstring_convert通过 to_bytes 将宽字符 UTF-16 字符串转换为 UTF-8 多字节字符串(它也支持其他方向的转换)。

这是通过(也是新引入的)std::codecvt_utf8_utf16 实现的转换方面。它很好地为我们处理了实际的转换。

除此之外,它还使用了 C++11 添加的新字 rune 字前缀——特别是 u,它用于 char16_t UTF-16 字符串:-) 还有 u8U 分别代表 UTF-8 和 UTF-32。


PS data(自 C++11 起)保证等于 c_str,因此可以依赖它以 NUL 终止。

关于java - 在 C++ 中相当于 Java 的 String.getBytes ("UTF-8")?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12230453/

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