c++如何判断字符串是否全为汉字
展开全部
咋个要看是哪种编码的字符串。
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 就可以得到字母或者符号的值。
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 就可以得到字母或者符号的值。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询