我正试图掌握在 C++
中处理文件的窍门。我正在尝试从一个文件中读取并制作另一个具有相同内容的文件。我已经成功地做到了可以复制文件的第一行,但不能复制其余部分。谁能告诉我我做错了什么?
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(int argc, char * argv[]){
string line;
ofstream writeFile;
ifstream readFile;
readFile.open("students.txt");
if (readFile.is_open()){
while (getline (readFile, line)){
writeFile.open("copytext.txt");
writeFile << line;
writeFile << line;
writeFile << line;
writeFile << line;
}
}
readFile.close();
writeFile.close();
return 0;
}
最佳答案
默认情况下,如果您不指定标志,openmode
将是write
。如果文件已经存在,这将销毁文件的内容。
#include <iostream>
#include <fstream>
int main()
{
std::ofstream of("test.txt"); // close() implicitly called by destructor
}
> echo "hello" > test.txt
> cat test.txt
hello
> g++ test.cpp
> ./a.out
> cat test.txt
糟糕!
你显然应该把它移到循环之外。顺便说一下,您不需要显式调用 open
或 close
,因为构造函数和析构函数会分别调用它们。流对象也可以隐式转换为 bool(如果流中有错误则返回 false),使 is_open
变得多余。
int main(int argc, char * argv[]){
string line;
ifstream readFile("students.txt");
ofstream writeFile("copytext.txt");
if (readFile && writeFile){
while (getline (readFile, line)) {
writeFile << line;
}
}
}
关于c++ - 尝试学习 C++ 中的基本文件操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28759964/