关于字符串编码,C++语言,计算“abc的”这个字符串的长度,Linux为6,Windows为5。如何让Windows长度也6

2025-01-06 17:49:46
推荐回答(5个)
回答1:

string
A type that describes a specialization of the template class basic_string with elements of type char as a string.
wstring
A type that describes a specialization of the template class basic_string with elements of type wchar_t as a wstring.

int main(){
wstring strTest ( L"中文" );
cout << "size:" << strTest.size() << endl; //输出 2

string strTest2 = "中文";
cout <return 0;
}

Returns the current number of elements in a string.
size_type size( ) const;
std::string.size() 返回 s 中字符的个数,不是字节数。返回值不包括最后的\0。

————————————————————
window如果使用微软C/C++编译器,则编译器默认打开开关/Zc:wchar_t,默认使用UTF-16编码,即所有Unicode字符都为2个字节,也就是上文中写了L的那种。
如果你改用UTF-8,那么值在0x0080到0x07FF之间的Unicode字符也会转换为2个字节。三个字节的是0X0800以上的Unicode字符。
如果你使用UTF-32,那么每个Unicode字符都是4个字节。

回答2:

不能设置,修改编码种类到UTF可以让一个字符的长度为2
汉字占两个字节,再加‘\0’就3个字节

回答3:

vc程序的字符集只有两种ansi和unicode。
文本存储的时候可以是ansi,unicode,utf8等,你可以在读取的时候只能判断是什么编码,然后转换为你在程序中使用的编码,然后计算。

回答4:

汉字占两个字节,再加‘\0’就3个字节

回答5:

windows下你用的应该是vc吧 工程设置里面有个字符集设定 你用的应该是默认的unicode 改成multicode