
c++ 如何知道当前字符串的编码类型
请教一下,一直没弄明白,我写一个c程序,前台打印显示中文字,如:stringspt="世界";cout<<spt;正常显示中文结果,但不清楚这个时候字符串的编码格式是什么...
请教一下,一直没弄明白,我写一个c程序,前台打印显示中文字,如:
string spt="世界";
cout<<spt;
正常显示中文结果,但不清楚这个时候字符串的编码格式是什么?还有,编码不是都是二进制存储或者十六进制吗?为什么到前台显示,有些编码就能是中文,有些就是保持进制的形式,或者有什么文章推荐给我看看理解一下,谢谢! 展开
string spt="世界";
cout<<spt;
正常显示中文结果,但不清楚这个时候字符串的编码格式是什么?还有,编码不是都是二进制存储或者十六进制吗?为什么到前台显示,有些编码就能是中文,有些就是保持进制的形式,或者有什么文章推荐给我看看理解一下,谢谢! 展开
展开全部
编程中遇到的编码一共两种,单字节和多字节,各种字符串类,宏的本质要么是char*,要么是wchar_t *
char*基础单位是一个字节,如果用来储存中文那么每个中文会占用2个字节,也就是两个基础单位
wchar_t*基础单位是2字节,如果用来储存中文那么每个文字只要1个单位就可以了,但本质上还是用了2个字节
可以看一下string类的基础单位是char*,wstring的基础单位是wchar_t*,同理还有CStringA是char*,CStringW是wchar_t*,另外还有各种宏
LPSTR: char *
LPCSTR: const char *
LPWSTR: wchar_t *
LPCWSTR: const wchar_t *
LPTSTR: TCHAR *
LPCTSTR: const TCHAR *
至于编码格式,其实这些字符本质是用整数,比如数字‘0’对应48,这是一套国际标准,所有的电脑都知道某个整数对应的字符内容
这个跟进制没关系,在内存中数据确实是以2进制储存的,但是相比之下110000对应字符‘0’和48对应字符‘0’人们更容易接受后者,他们本质上是一个概念
char*基础单位是一个字节,如果用来储存中文那么每个中文会占用2个字节,也就是两个基础单位
wchar_t*基础单位是2字节,如果用来储存中文那么每个文字只要1个单位就可以了,但本质上还是用了2个字节
可以看一下string类的基础单位是char*,wstring的基础单位是wchar_t*,同理还有CStringA是char*,CStringW是wchar_t*,另外还有各种宏
LPSTR: char *
LPCSTR: const char *
LPWSTR: wchar_t *
LPCWSTR: const wchar_t *
LPTSTR: TCHAR *
LPCTSTR: const TCHAR *
至于编码格式,其实这些字符本质是用整数,比如数字‘0’对应48,这是一套国际标准,所有的电脑都知道某个整数对应的字符内容
这个跟进制没关系,在内存中数据确实是以2进制储存的,但是相比之下110000对应字符‘0’和48对应字符‘0’人们更容易接受后者,他们本质上是一个概念
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询