每当我通过fstream阅读时,我最后会得到一个额外的字符,我该如何避免这个?
编辑:
ifstream readfile(inputFile);
ofstream writefile(outputFile);
char c;
while(!readfile.eof()){
readfile >> c;
//c = shiftChar(c, RIGHT, shift);
writefile << c;
}
readfile.close();
writefile.close();
答案 0 :(得分:7)
这通常是由于错误地测试文件末尾造成的。您通常希望执行以下操作:
while (infile>>variable) ...
或:
while (std::getline(infile, whatever)) ...
但不是:
while (infile.good()) ...
或:
while (!infile.eof()) ...
编辑:前两个执行读取操作,检查是否失败,如果是,则退出循环。后两个尝试读取,处理“读取”的内容,然后在下一次迭代时退出循环,如果先前的尝试失败。
Edit2:将一个文件轻松复制到另一个文件,请考虑使用以下内容:
// open the files:
ifstream readfile(inputFile);
ofstream writefile(outputFile);
// do the copy:
writefile << readfile.rdbuf();
答案 1 :(得分:0)
根据代码,你想要做的是将一个文件的内容复制到另一个文件?
如果是这样,我会尝试这样的事情:
ifstream fin(inputFile, ios::binary);
fin.seekg(0, ios::end);
long fileSize = fin.tellg();
fin.seekg(0, ios::beg);
char *pBuff = new char[fileSize];
fin.read(pBuff, fileSize);
fin.close();
ofstream fout(outputFile, ios::binary)
fout.write(pBuff, fileSize);
fout.close;
delete [] pBuff;