使用ifstream的get()函数读取文件中的字符后输出时,最后一个字符多输出一次
2013-09-27 15:00
260 查看
今天写程序时要把文件中的字符读取出来,发现使用ifstream输出文件中的字符时,文件最后一个字符多输出了一次,例如文件的内容是“AAB”,但输出时是现实“AABB”,上网了查了一下,发现问题是出在判断文件的eof()中。
当文件指针到达文件末尾时,执行eof不会立刻返回true,要等到下一次读取时才会返回。即再执行一次get()之后,eof才会返回true。此时,ifstream流的状态标识为失败,get没有读到东西,所以c保存了上一次读取的数据,因此出现最后一个字符被显示两次的现象。
解决办法是使用eof()与fail()结合判断文件结尾。
出错的代码:
ifstream infile;
infile.open("D:/test.txt");
char ch;
while(!infile.eof ())
{
infile.get(ch);
cout<<ch;
}
修改后的代码:
ifstream infile;
infile.open("D:/test.txt");
char ch;
while(!infile.eof ())
{
infile.get(ch);
if(infile.fail())
break;
cout<<ch;
}
当文件指针到达文件末尾时,执行eof不会立刻返回true,要等到下一次读取时才会返回。即再执行一次get()之后,eof才会返回true。此时,ifstream流的状态标识为失败,get没有读到东西,所以c保存了上一次读取的数据,因此出现最后一个字符被显示两次的现象。
解决办法是使用eof()与fail()结合判断文件结尾。
出错的代码:
ifstream infile;
infile.open("D:/test.txt");
char ch;
while(!infile.eof ())
{
infile.get(ch);
cout<<ch;
}
修改后的代码:
ifstream infile;
infile.open("D:/test.txt");
char ch;
while(!infile.eof ())
{
infile.get(ch);
if(infile.fail())
break;
cout<<ch;
}
相关文章推荐
- 文件输入中的good()函数读取不到最后一个字符的问题
- ifstream(一)之 eof() 函数——解决读取文件最后一个数据多读一次的方法
- PHP读取文件函数fread,fgets,fgetc,file_get_contents和file函数的使用总结
- php读取本地文件常用函数(fopen与file_get_contents)
- 使用dumpbin命令查看dll导出函数及重定向输出到文件(VS自带)
- 文件磁盘相关函数[12]-读取文件属性 FileGetAttr
- 使用getJSON方法读取json文件数据并处理
- 使用ifstream和getline读取文件内容[c++]
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
- C++类中包含string类型数据使用read和write实现文件读取和输出时遇到的问题
- Java使用FileReader(file)、readLine()读取文件,以行为单位,一次读一行,一直读到null时结束,每读一行都显示行号。
- 使用ifstream和getline读取文件内容
- 编写一段程序,从标准输入读取string对象的序列直到连续出现两个相同的单词或者所有单词都读完为止。使用while循环一次读取一个单词,当一个单词连续出现两次是使用break语句终止循环。输出连续重复出现的单词,或者输出一个消息说明没有人任何单词是重复出现的。
- php读取文件一个字符的函数fgetc
- php 在linux 用fopen() 函数打开,file_get_contents(),fread()函数 读取 另外一台服务器映射过来的文件 总是返回false,null的情况。
- 关于Object.class.getResourceAsStream方法读取文件的使用
- vs2013输出-1.#INF等特殊字符的文件读取
- 使用文件进行读取或输出的两种方式(重定向版和fopen版)
- 厚积薄发JAVA文件操作--java I/O中通过字符流读取文件并输出
- 转:关于使用fputc输出,文件结尾多一个字符的问题