C++中文件操作(文件复制),小问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 19:21:49
#include<iostream>
#include<fstream>

using namespace std;

void main()
{
ifstream in("d:\\read.txt");
if(!in) {cout<<"file error!"<<endl;exit(1);}
ofstream out("d:\\write.txt");
if(!out) {cout<<"file error!"<<endl;exit(1);}
char x;

while(!in.eof())
{
in.get(x);
cout<<x;
out.put(x);
}

in.close();
out.close();
}

假设d盘根目录下存在read.txt和write.txt
且read.txt中的内容是“123”(字符123)
write.txt中的内容是“空”(什么都没有)。

在执行完以上按字符拷贝的程序后,
write.txt中的内容变成了“1233”,最后一个字符拷贝了两次,想问一下为什么,程序有什么问题。

#include<iostream>
#include<fstream>

using namespace std;

void main()
{
ifstream in("d:\\read.txt");
if(!in) {cout<<"file error!"<<endl;exit(1);}
ofstream out("d:\\write.txt");
if(!out) {cout<<"file error!"<<endl;exit(1);}
char x;
in>>x;//拿到外面来
while(!in.eof())
{

cout<<x;
out<<x;
in>>x;
}

in.close();
out.close();
} //因为只有in在get的时候指针才移动,当移动到末尾时虽然已经到末尾,但还是执行cout<<x; out.put(x);导致显示上出错

in最后一次没有读到数据,x的值是上次读取的3,所以会出现2个3,可以这样测试一下:
while(!in.eof())
{
x = 0;
in.get(x);
cout<<x;
out.put(x);
}