首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C和C++的输出真的那么智能?该如何处理

2013-11-11 
C和C++的输出真的那么智能?今天在输出汉字的时候遇到了一个问题。汉字在windows中是作为两个字节存储的,如

C和C++的输出真的那么智能?
今天在输出汉字的时候遇到了一个问题。汉字在windows中是作为两个字节存储的,如果直接输出的话,那么因为不在0~127范围之内,所以不是可见字符,但是,如果把一个汉字的两个字节拆开的话,无论中间停留多长时间,它都会完整的输出这个汉字。我就想着为什么不会发生就像在Unix下汉字出现乱码的情况,就像下面的这种情况:
C和C++的输出真的那么智能?该如何处理 C和C++的输出真的那么智能?该如何处理
如果我选择的是一个字节的话,那就会出现乱码,为什么在windows下不会这样呢?下面是程序:


#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
char s1[]="yang";
char s2[]="杨明明";

cout<<"begin……"<<endl;
cout<<s2[0];
Sleep(3000);
cout<<s2[1];

cout<<endl;
cout<<int(s1[0])<<endl;
cout<<int(s2[0])<<endl;
return 0;
}

[解决办法]
引用:
今天在输出汉字的时候遇到了一个问题。汉字在windows中是作为两个字节存储的,如果直接输出的话,那么因为不在0~127范围之内,所以不是可见字符,但是,如果把一个汉字的两个字节拆开的话,无论中间停留多长时间,它都会完整的输出这个汉字。我就想着为什么不会发生就像在Unix下汉字出现乱码的情况,就像下面的这种情况:
 
如果我选择的是一个字节的话,那就会出现乱码,为什么……


用多字节就会产生乱码
unicode不会。
[解决办法]
引用:
我想问的就是,windows是怎么输出汉字的,难道是另个字节都不可见,但是当它们何在一块儿的时候,就会出现汉字?感觉怎么这么邪乎呢?

显示汉字是要按字符取字形的
发现只剩一个不在ASCII码范围内的字节,就暂时保留在缓冲区里,很难么?
倒是楼主为什么会觉得这个问题跟间隔时间有关系这让我很费解,停留一秒还是一年,对于单线程程序来说有区别么?
[解决办法]
这和输出有什么关系?
是你使用的终端设备对多字节字符支持的不好罢了.

热点排行