1 C++全角字符转半角字符
在一些文章或者网页上的数字在复制到剪切板上面时经常会保持全角输入状态,这个需要将全角字符转换为半角字符。在转换的过程中,中文保持原有状态,中文标点符号保持原有状态,将中文空格清空,其他全角字符转换为半角字符,转换过程可参考以下代码:
#include <iostream>
static std::string DoubleByteCharToSingleByteChar(const std::string& srcStr)
{
std::string dstStr = "";
unsigned char tmp, tmp1;
for (unsigned int i = 0; i < srcStr.length(); i++)
{
tmp = srcStr[i];
tmp1 = srcStr[i + 1];
// 第一个字节是163,标志着是全角字符
if (tmp == 163)
{
dstStr += (unsigned char)srcStr[i + 1] - 128;
i++;
continue;
}
// 汉字
else if (tmp > 163)
{
dstStr += tmp;
dstStr += tmp1;
i++;
continue;
}
// 中文空格
else if (tmp == 161 && tmp1 == 161)
{
dstStr += "";
i++;
continue;
}
else if (tmp == 161 && tmp1 > 161)
{
dstStr += tmp;
dstStr += tmp1;
i++;
continue;
}
else
{
dstStr += tmp;
}
}
return dstStr;
}
int main()
{
std::string input_str = "55555。你好。";
std::string output_str = DoubleByteCharToSingleByteChar(input_str);
std::cout << output_str << std::endl;
}
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:C++ – GBK编码下的全角字符转半角字符
原文链接:https://www.stubbornhuang.com/1846/
发布于:2021年11月30日 9:34:48
修改于:2023年06月26日 21:00:54
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
50