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

ifstream 字符显示的有关问题

2012-02-24 
ifstream 字符显示的问题我初学C++喜欢随意编写一些程序来加深理解。遇到一个问题请教大家程序如下#include

ifstream 字符显示的问题
我初学C++   喜欢随意编写一些程序来加深理解。遇到一个问题请教大家

程序如下

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

void   main()
{
char   ch;
        ifstream   fin(   "e:\\temp.txt "   );
        while(   !fin.eof()   )  
        {
            fin   > >   ch;
            cout   < <   ch;
        }
}

在E盘随便建个temp.txt   文件   里面混放些中   英文   数字。
执行后显示发现temp.txt里面的内容空格没了

然后程序改为如下后发现只显示出了英文和数字   中文没了
#include   <iostream>
#include   <fstream>
using   namespace   std;

void   main()
{
char   ch;
        ifstream   fin(   "e:\\temp.txt "   );
        while(   !fin.eof()   )  
        {
            fin   > >   ch;
            cout   < <   ch;
            cout   < <   endl;
        }
}


[解决办法]
cout < < ch;
把ch的值缓存起来了,所以两个字节的中文字符还是连在一起的,最后显示的时候还是中文字符
[解决办法]
首先纠正一点汉字并非一定是UNICODE,记事本编辑保存的文本文件默认编码类型为ANSI,也就是GB2312,英文单字节中文两字节,因为主要是本地使用主要考虑节省空间

再说第二个问题,没有显示乱码是因为显示的是空白你没看见,
用这行cout < <hex < <int((unsigned char)ch);在加上一个十六进制编辑器你可以看的更清楚

关于字符与编码 参看http://www.regexlab.com/zh/encoding.htm

热点排行