我正试图搞定处理文件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;
}
Run Code Online (Sandbox Code Playgroud)
小智 6
默认情况下,如果您没有指定标志,那么openmode将是write.这将破坏文件的内容(如果已存在).
#include <iostream>
#include <fstream>
int main()
{
std::ofstream of("test.txt"); // close() implicitly called by destructor
}
Run Code Online (Sandbox Code Playgroud)
> echo "hello" > test.txt
> cat test.txt
hello
> g++ test.cpp
> ./a.out
> cat test.txt
Run Code Online (Sandbox Code Playgroud)
哎呀!
显然你应该把它移到循环之外.顺便说一句,您不需要调用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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
360 次 |
| 最近记录: |