C++输出wchar_t问题

我是在VS2008下面编译的,以下是代码:

#include <iostream>
#include <cwctype>
using namespace std;

int main(){
wchar_t c='你';
if('你'==c)cout<<"Yes"<<endl;;
wcout<<c<<endl;
wchar_t b='a';
wcout<<b<<endl;
return 0;
}

不知道为什么,运行后只有Yes被打印出来,而宽字符却没有。这是为什么?怎么解决?
那输入呢?也一样吗?有长字符型的字符串吗?

呃。。。首先宽字符和宽字符串常量前要加L,例如L'A'
然后中文的话,要设置区域使用wcout.imbue(locale("chs"));
给个简单的示例
#include <iostream>
#include <cwctype>
using namespace std;

int main()
{
wchar_t c=L'你';
wcout.imbue(locale("chs"));
wcout<<c<<endl;
system("pause");
return 0;
}

字符串一样的前面加前缀L,输入一样的。。。建议找本手册查查才是学习的好方法。还可以用全局函数setlocale(LC_ALL,"Chinese-simplified");。

唉一个0分的题我都啰嗦这么多,我真是游手好闲啊,惭愧。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-09-30
呃。。。首先宽字符和宽字符串常量前要加L,例如L'A'
然后中文的话,要设置区域使用wcout.imbue(locale("chs"));
给个简单的示例
#include <iostream>
#include <cwctype>
using namespace std;

int main()
{
wchar_t c=L'你';
wcout.imbue(locale("chs"));
wcout<<c<<endl;
system("pause");
return 0;
}

字符串一样的前面加前缀L,输入一样的。。。建议找本手册查查才是学习的好方法。还可以用全局函数setlocale(LC_ALL,"Chinese-simplified");。

唉一个0分的题我都啰嗦这么多,我真是游手好闲啊,惭愧。

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

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

C++输出wchar_t问题
呃。。。首先宽字符和宽字符串常量前要加L,例如L'A'然后中文的话,要设置区域使用wcout.imbue(locale("chs"));给个简单的示例 include <iostream> include <cwctype> using namespace std;int main(){ wchar_t c=L'你';wcout.imbue(locale("chs"));wcout<<c<<endl;system("pause");retu...

C++ wchar_t
在C++中,`wchar_t` 类型可以用于表示中文字符,包括Unicode编码的中文字符。由于中文字符通常使用多个字节进行编码(如UTF-8),因此在使用 `wchar_t` 表示中文字符时,需考虑编码方式和字节顺序。例如,在UTF-16编码下,一个中文字符可能需要两个 `wchar_t` 类型的字节。以下是一个示例,演示了如何...

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

C++语言 wchar_t报错
include <WCHAR.h>加进去试试

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

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

有关C++中wchar_t的问题
你的 char b = 205 后面的确忘了打 ;应该是 char b = 205;wchar_t bob = L'p';

相似回答