关于一个eof()函数检测文件尾的问题,在线等……

来源:百度知道 编辑:UC知道 时间:2024/05/22 18:34:04
小弟是个菜鸟,我在用eof函数时遇到了问题.每次用它来读取文件内容(纯字母)然后输出到另一个文件内的时候,输出的内容就会多出一个尾字母。请大侠们帮帮忙告诉我怎样搞才对。
我设计了一个简单的代码来具体说明一下这个问题:
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
ifstream input;
input.open("D:\1.txt");

ofstream output;
output.open("D:\2.txt");

char ch;
while(!input.eof()){
input.get(ch);
static_cast<int>(ch);
output<<static_cast<char>(ch);
}
}

比如我在1.txt 内写的内容是“meet me at midnight”,它输出来以后就变成了“meet me at midnightt”。
我想知道错在了什么地方,以及正确的应该怎样做。
回复1楼:这个程序必须要进行数据类型的转换

很小的问题, 我以前也遇到过呵呵
ifstream的流结束标记只有在一次读取的时候发生读取失败时才会被置位, 也就是说, 必须要有一次读取动作, 结果读取失败了, eof的判断才为真
所以稍稍改下代码就ok

#include<iostream>
#include<fstream>
using namespace std;
int main()
{
ifstream input;
input.open("1.txt");

ofstream output;
output.open("2.txt");

char ch;
while(true){
input.get(ch);
if (input.eof())
{
break;
}
static_cast<int>(ch);
output<<static_cast<char>(ch);
}
}

static_cast<int>(ch);
output<<static_cast<char>(ch);
为什么不直接写成
output<<ch;