wchar_t wch1[] = {'我' , '是' , '中' , '国' , '人'};
size_t i=wcslen(wch1)=11;
wchar_t wch2[] = {'我' , '是' };
size_t j=wcslen(wch2)=7;
请问下,这是为什么啊? 是如何计算长度的?
10 个解决方案
#1
wcslen() 需要00作为结束符来统计长度。
应该给wch1[]一个完整的字符串,而不是一个个字符。
应该给wch1[]一个完整的字符串,而不是一个个字符。
#2
wcslen, 得出的不是字符串的长度而是字符的个数.另外你没有加结尾符
#3
wchar_t wch1[] = {'我' , '是' , '中' , '国' , '人'};
--
这并不是字符串!只是字符数组.
自然用操作字符串的函数不能得到正确结果
wchar_t wch1[] = "我是中国人";
或
wchar_t wch1[] = {'我' , '是' , '中' , '国' , '人',0};
--
这并不是字符串!只是字符数组.
自然用操作字符串的函数不能得到正确结果
wchar_t wch1[] = "我是中国人";
或
wchar_t wch1[] = {'我' , '是' , '中' , '国' , '人',0};
#4
wchar_t wch1[] = {'我' , '是' , '中' , '国' , '人', '\0'};
size_t i=wcslen(wch1); //5
wchar_t wch2[] = {'我' , '是','\0' };
size_t j=wcslen(wch2); //2
#5
int main()
{
wchar_t ch1[]=L"我是中国人";
wchar_t ch2[]={L'我',L'也',L'是',L'中',L'国',L'人',L'\0'};
wcout.imbue(std::locale("chs"));
wcout<<ch1<<L"\n"<<ch2<<L"\n";
cout<<wcslen(ch1)<<'\t'<<wcslen(ch2)<<'\n';
cout<<"程序结束\n";
return 0;
}
#6
up
#7
没有结尾 \0,长度就不固定了
#8
怎么我的机器上第一个的值是15
#9
5楼好~··
#10
5楼的解释一下吧!
locale国际化的设置貌似非常复杂。
#include <iostream>
#include <locale>
using namespace std;
int main()
{
locale loc("");
cout<<loc.name()<<endl;
}
输出为:Chinese_People's Republic of China.936
请按任意键继续. . .
#1
wcslen() 需要00作为结束符来统计长度。
应该给wch1[]一个完整的字符串,而不是一个个字符。
应该给wch1[]一个完整的字符串,而不是一个个字符。
#2
wcslen, 得出的不是字符串的长度而是字符的个数.另外你没有加结尾符
#3
wchar_t wch1[] = {'我' , '是' , '中' , '国' , '人'};
--
这并不是字符串!只是字符数组.
自然用操作字符串的函数不能得到正确结果
wchar_t wch1[] = "我是中国人";
或
wchar_t wch1[] = {'我' , '是' , '中' , '国' , '人',0};
--
这并不是字符串!只是字符数组.
自然用操作字符串的函数不能得到正确结果
wchar_t wch1[] = "我是中国人";
或
wchar_t wch1[] = {'我' , '是' , '中' , '国' , '人',0};
#4
wchar_t wch1[] = {'我' , '是' , '中' , '国' , '人', '\0'};
size_t i=wcslen(wch1); //5
wchar_t wch2[] = {'我' , '是','\0' };
size_t j=wcslen(wch2); //2
#5
int main()
{
wchar_t ch1[]=L"我是中国人";
wchar_t ch2[]={L'我',L'也',L'是',L'中',L'国',L'人',L'\0'};
wcout.imbue(std::locale("chs"));
wcout<<ch1<<L"\n"<<ch2<<L"\n";
cout<<wcslen(ch1)<<'\t'<<wcslen(ch2)<<'\n';
cout<<"程序结束\n";
return 0;
}
#6
up
#7
没有结尾 \0,长度就不固定了
#8
怎么我的机器上第一个的值是15
#9
5楼好~··
#10
5楼的解释一下吧!
locale国际化的设置貌似非常复杂。
#include <iostream>
#include <locale>
using namespace std;
int main()
{
locale loc("");
cout<<loc.name()<<endl;
}
输出为:Chinese_People's Republic of China.936
请按任意键继续. . .