gpt4 book ai didi

c++ - 尝试学习 C++ 中的基本文件操作

转载 作者:太空狗 更新时间:2023-10-29 23:39:49 25 4
gpt4 key购买 nike

我正试图掌握在 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

糟糕!

你显然应该把它移到循环之外。顺便说一下,您不需要显式调用 openclose,因为构造函数和析构函数会分别调用它们。流对象也可以隐式转换为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com