Car*_*rum 15
这L
意味着字符串是一串wchar_t
字符,而不是正常的字符串char
.我不知道你从哪里得到了大约四个字节.
从规范部分6.4.5字符串文字,第2段:
甲字符串文字是包含在双引号零个或多个多字节字符序列,如在
"xyz"
.一个宽字符串文字是一样的,除了用字母前缀L
.
并摘录第5段:
对于字符串文字,数组元素具有类型
char
,并使用多字节字符序列的各个字节进行初始化; 对于宽字符串文字,数组元素具有类型wchar_t
,并使用与多字节字符序列对应的宽字符序列进行初始化,由mbstowcs
具有实现定义的当前语言环境的函数定义.
如有疑问,请参阅标准(§6.4.5,String Literals):
甲字符串文字是包含在双引号零个或多个多字节字符序列,如在
"xyz"
.一个宽字符串文字是一样的,除了用字母前缀L
.
请注意,它并不表示每个字符都是a long
,尽管前缀与long
文字后缀相同.
L
并不意味着long integer
在为字符串添加前缀时.这意味着字符串中的每个字符都是宽字符.
如果没有这个前缀,你正在分配的字符串char
的wchar_t
指针,这将是一个不匹配.