注册 登录
编程论坛 C++教室

错码改写

求实 发布于 2011-09-24 22:42, 1154 次点击
#include<iostream.h>
void main()
{
    char a[]="计算机";
   
    cout<<a[1];

}
为什么输出的不是“算”而是不认识的字?
#include<iostream.h>
void main()
{
    char a[]="计算机";
   
    cout<<a;

}
而这却能输出"计算机"
18 回复
#2
jklei2011-09-25 00:15
一个中文字占两个字节,所以你在输出a[1]的时候是不能得到完整的一个中文字的。
#3
ToBeOOP2011-09-25 01:09
可以用wchar_t试试...
#4
八画小子2011-09-25 01:59
出现汉字字符串的地方,C++编译器都把它按照宽字符处理了。一个宽字符有两个字节。
#5
a6345778732011-09-25 10:56
二楼正解
#6
ToBeOOP2011-09-25 12:49
程序代码:
#include<iostream>
using std::wcout;
using std::locale;
using std::endl;

 void main()    {
     wchar_t a[]=L"计算机";
     wcout.imbue(locale("chinese"));
     wcout<<a[1]
                << endl;
}
这样子就可以输出中文了..具体的可以在这里看看http://hi.baidu.com/bevan_007/blog/item/a1f1798b173cd5dafd1f105c.html
#7
求实2011-09-25 12:50
#include <iostream.h>
#include <locale.h>
void main()
{
    wchar_t a[]=L"计算机";
    wcout<<a[1];

为什么输出的是数字诶不是汉字?
#8
求实2011-09-25 12:52
回复 6楼 ToBeOOP
我试啦也是输出数字而不是汉字,这是为什么呀?
#9
ToBeOOP2011-09-25 12:56
这段代码我是在Win7+VS2010下运行的..得出的结果是汉字...你用了wcout了吗?
#10
求实2011-09-25 12:59
回复 9楼 ToBeOOP
我把你那段代码直接复制也是输出数字
我用的是vc++6.0
在这上面怎么编呀?
#11
ToBeOOP2011-09-25 13:01
我去装个VC++6.0试试...
#12
ToBeOOP2011-09-25 13:02
有结果了再来回答
#13
ToBeOOP2011-09-25 13:33
不好意思...Win7不兼容VC++6.0
#14
博士无双2011-09-25 18:50
同意二楼
#15
hxlniada2011-09-28 18:40
额,没人知道么?
#16
lkz1987n2011-09-29 00:36
看看,自己的字符处理功夫还不行哦。
#17
guilin08222011-10-01 02:14
a[1]代表数组中第一个元素,而a可以代表这个数组中所有元素,不加下标时,也不成了数组。
#18
guilin08222011-10-01 02:20
如果输a[1]在有的电脑上还不能输出“计”,因为汉字是两个字节,也就是只能输出前一个字节的内容,所以出来的不是“计”,但有的系统不一样,字符是两字节,所以可以输出“计”
#19
guilin08222011-10-01 02:25
刚刚测出来,输出“计”字了

cout<<a[1];
改成cout<<a[0];cout<<a[1];
这样就出来了,数组第一个元素坐标是0,不是1。
1