c++如何判断一个字符串是否只有可见字符

2025-03-19 18:31:45
推荐回答(1个)
回答1:

咋个要看是哪种编码的字符串。

VC/VS里面,汉字默认都是以GBK编码, 英文字符一个byte,中文字符2个byte。
而std::wstring 是unicode形式,英文和中文都是2二个byte。
而char* 或者 std::string 也能保存中文,如 GBK 或者 utf8编码。

不同的编码判断的方式都不一样,当然最简单的方式就是统一转化成unicode。

对于一个unicode来说,字母和汉字都是 一个unsigned short表示 或 WORD。
判断高8位为0即可说明它是 ascii码。比如 0x001A 那么它肯定是ascii字符区间的值
而0x1A1A肯定就不是。

对于0x001A 把高8位去掉,直接强制转换成 char 就可以得到字母或者符号的值。