C和C++的输出真的那么智能?该如何处理
C和C++的输出真的那么智能?今天在输出汉字的时候遇到了一个问题。汉字在windows中是作为两个字节存储的,如
C和C++的输出真的那么智能?
今天在输出汉字的时候遇到了一个问题。汉字在windows中是作为两个字节存储的,如果直接输出的话,那么因为不在0~127范围之内,所以不是可见字符,但是,如果把一个汉字的两个字节拆开的话,无论中间停留多长时间,它都会完整的输出这个汉字。我就想着为什么不会发生就像在Unix下汉字出现乱码的情况,就像下面的这种情况:
如果我选择的是一个字节的话,那就会出现乱码,为什么在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;
}
[解决办法]用多字节就会产生乱码
unicode不会。
[解决办法]显示汉字是要按字符取字形的
发现只剩一个不在ASCII码范围内的字节,就暂时保留在缓冲区里,很难么?
倒是楼主为什么会觉得这个问题跟间隔时间有关系这让我很费解,停留一秒还是一年,对于单线程程序来说有区别么?
[解决办法]这和输出有什么关系?
是你使用的终端设备对多字节字符支持的不好罢了.