C++用输入输出流实现文件的复制
想利用C++中文件的输入输出流实现TXT文件的复制。流程:创建一个文件写入一些内容,随后创建另一个文件将前文件的内容复制到后一个文件中。在考虑的实现方式:一个字符一个字符...
想利用C++中文件的输入输出流实现TXT文件的复制。流程:创建一个文件写入一些内容,随后创建另一个文件将前文件的内容复制到后一个文件中。在考虑的实现方式:一个字符一个字符的复制。大神来看看出了什么问题:
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;
int main(){
char v[]=("Do you like games?\nI want to play a game with you.");
ofstream os("119.txt",ios_base::out/ios_base::binary);
os.write(reinterpret_cast<char*>(&v),sizeof(v));
ofstream copy("119-copy.txt",ios_base::out/ios_base::binary);
ifstream is("119.txt",ios_base::out/ios_base::binary);
int i=0;
while(is){
is.seekg(i*sizeof(char));
char v;
is.read(reinterpret_cast<char*>(&v),sizeof(1));
copy.write(reinterpret_cast<char*>(&v),sizeof(1));
}
return 0;
}
编译后在copy文件中出现了两个“烫”(我也是醉了),想问问大神问题出在哪里? 展开
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;
int main(){
char v[]=("Do you like games?\nI want to play a game with you.");
ofstream os("119.txt",ios_base::out/ios_base::binary);
os.write(reinterpret_cast<char*>(&v),sizeof(v));
ofstream copy("119-copy.txt",ios_base::out/ios_base::binary);
ifstream is("119.txt",ios_base::out/ios_base::binary);
int i=0;
while(is){
is.seekg(i*sizeof(char));
char v;
is.read(reinterpret_cast<char*>(&v),sizeof(1));
copy.write(reinterpret_cast<char*>(&v),sizeof(1));
}
return 0;
}
编译后在copy文件中出现了两个“烫”(我也是醉了),想问问大神问题出在哪里? 展开
1个回答
推荐于2016-03-22
展开全部
循环中又定义了一次char v;把外面的v覆盖掉了。
用reinterpret_cast是什么心态,绝大部分程序都不会用到这种强制类型转换,一般是你自己把类型搞错了。reinterpret_cast<char*>(&v)都可以直接换成v。
删掉你的char v;。
os.write(v,sizeof(v));
is.read(v,sizeof(v));
copy.write(v,sizeof(v));
就可以了。
用reinterpret_cast是什么心态,绝大部分程序都不会用到这种强制类型转换,一般是你自己把类型搞错了。reinterpret_cast<char*>(&v)都可以直接换成v。
删掉你的char v;。
os.write(v,sizeof(v));
is.read(v,sizeof(v));
copy.write(v,sizeof(v));
就可以了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询