gpt4 book ai didi

c++ - 将字符串转换为 UTF-8 转义序列

转载 作者:太空宇宙 更新时间:2023-11-03 10:20:17 25 4
gpt4 key购买 nike

在我的 C++ 程序中,我想像这样转换一个 std:string:

abc €

到 UTF-8 转义序列:

abc%20%E2%82%AC

而且我需要它独立于平台!我所发现的只是仅适用于 Windows 的解决方案。一定有解决方案吧?

最佳答案

这对我来说似乎很简单。你的字符串是一个序列字节。某些字节值(大多数,实际上,但不是最常见的)不允许,应替换为三个字符序列 '%' 后跟两个表示字节的十六进制字符值(value)。所以像这样:

std::string
toEscaped( std::string const& original )
{
std::string results ;
for ( std::string::const_iterator iter = original.begin();
iter != original.end();
++ iter ) {
static bool const allowed[] =
{
// Define the 256 entries...
};
if ( allowed[static_cast<unsigned char>(*iter)] ) {
results += *iter;
} else {
static char const hexChars[] = "0123456789ABCDEF";
results += '%';
results += hexChars[(*iter >> 4) & 0x0F];
results += hexChars[(*iter ) & 0x0F];
}
}
return results;
}

应该可以解决问题。

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

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