在c++中,为什么wchar_t类型变量输出时是一串数字?这串数字代表什么?

新手!!急

第1个回答  2013-03-10
从本质上来说wchar_t是unsigned int类型,我估计cout或者printf应该是不加区分通通视为unsigned int,所以才会输出数字本回答被提问者采纳
第2个回答  2013-03-10
#include <iostream>#include <cstdlib>
#include <locale>
using namespace std;
int main ()
{

wchar_t d[]=L"李"; char n = 's';
wcout <<d<< endl;
cout << n << endl;
return 0;
}追问

代码改了以后,控制台上只会输出s

第3个回答  2013-03-10
代码贴一下追问

#include
using namespace std;
int main ()
{
wchar_t d = '李';
char n = 's';
cout << d << endl;
cout << n << endl;
return 0;
}

追答

用wcout试试

追问

用wcout输出时,char类型的会变为数字输出,而wchar_t没有变化

追答

哦,搞错了貌似那个wcout好像只是参数是宽位字符的。宽位字符的一个解释可以看下http://bbs.bccn.net/thread-188395-1-1.html这里的7楼的解释。不知道用printf,里面对应的控制符用ls会怎么样。可惜我现在这台电脑没编译环境。。。。

在c++中,为什么wchar_t类型变量输出时是一串数字?这串数字代表什么?
从本质上来说wchar_t是unsigned int类型,我估计cout或者printf应该是不加区分通通视为unsigned int,所以才会输出数字

C++的wchar_t类型的问题
因为cout的<<运算符重载函数对char*定义的是特化的版本,即输出其字符串内容。而普通指针cout只输出地址的值。wchar_t实际上就是short int,cout对wchar_t并没有特化的版本。

C++数据类型问题,wchar_t和char;size_t
wchar_t 是双字节字符, char 是单字节字符。 一般来说wchar_t几乎总是可以取代char(除非这个地方就是需要一个8位的东西)。 当然 wchar_t要比char 多占用一倍的内存空间。 一般来说vc下编程多半是用 TCHAR 类型, 根据编译器选项自动define成 wchar_t或者char size_t你就当它是个整数就行了...

问个C++的关于wchar_t的小问题
我这里输出是25105。wchar_t和编码和locale有关,windows上用的对应wchar_t的字符集是ucs-2,对应的编码值为25105。cout没有对应输出的wchar_t字符的函数,所以提升为int,最后输出编码值。用wcout输出时都会编码为locale相关的字符集(默认的编码在控制面板,区域里设置),如果无法输出,那么就会失败,此...

C++ wchar_t
在C++中,`wchar_t` 是一种用于表示宽字符数据的类型。它通常占用 2 或 4 个字节,能够容纳更广泛的字符集,包括Unicode字符。在多语言环境的应用程序中,如国际化和本地化项目,`wchar_t` 类型尤为适用。在C++标准库的头文件中,如 `` 和 ``,广泛使用了 `wchar_t` 类型。它与 `char` ...

C++11 中 wchar_t 可以储存多少汉字,多少英文字母,多少数字,多少符号...
在linux,bsd下大小为4个字节,编译器使用utf32存储。utf16和utf32是unicode编码的存储格式。unicode涵盖所有汉字,字母,数字,符号,所以wchar_t肯定都是能存储的 由于早期标准没有约束wchar_t字节数,导致混乱,所以11标准增加char16_t和char32_t类型,规定分别使用utf16和utf32存储 ...

C++学习遇到的问题 wchar_t wt[] = L"中";
可以,但是wt前面要加上 wt[]表示数组,字符串实质上是一个以空字符结尾的字符型数组

关于C++中 wchar_t型的问题?
返回的这个数字就是0x6c49,也即27721,你可以这样察看"汉"的unicode编码 在写字板里写出"汉",然后选中"汉",按Alt+X就可查看这个字的unicode,再次按Alt+X恢复显示该字

wchar_t简介
相比之下,wchar_t的数据类型通常更宽,可以是16位或32位,具体取决于使用的C或C++库。例如,GNU Libc规定wchar_t为32位,这就意味着它具有更强大的字符表示能力,能容纳更多的字符。总的来说,wchar_t的使用极大地扩展了字符处理的灵活性。在标准的C++编程中,你将发现wprintf()函数以及iostream类库...

用C\/C++输出汉字字符串
如果是中文输出 用wchar_t字符串, 中文输出都是偶数个字节,你中英文混合输出会打乱中文字节的编码,char是单字节无法一次保存一个完整的双字节数据,wchar_t 但whcar_t是VC环境下关键字,不知道你用的是什么开发平台; 记得wchar_t在取值时需要强制转换如:wchar_t *pLoc = (wchar_t*)strstr((...

相似回答