3

如何在 C++ 中打开一个文本文件并将其所有行附加到另一个文本文件中?我发现主要是从文件到字符串的单独读取以及从字符串到文件的写入的解决方案。这可以优雅地结合起来吗?

并不总是两个文件都存在。访问每个文件时应该有一个布尔返回。

如果这已经偏离主题,我很抱歉:将文本内容附加到文件中是否无冲突意味着多个程序可以同时执行此操作(行的顺序无关紧要)?如果不是,那么(原子)替代方案是什么?

4

2 回答 2

8

我只能说打开一个文件并将其附加到另一个文件:

std::ifstream ifile("first_file.txt");
std::ofstream ofile("second_file.txt", std::ios::app);

//check to see that the input file exists:
if (!ifile.is_open()) {
    //file not open (i.e. not found, access denied, etc). Print an error message or do something else...
}
//check to see that the output file exists:
else if (!ofile.is_open()) {
    //file not open (i.e. not created, access denied, etc). Print an error message or do something else...
}
else {
    ofile << ifile.rdbuf();
    //then add more lines to the file if need be...
}

参考:

http://www.cplusplus.com/doc/tutorial/files/

https://stackoverflow.com/a/10195497/866930

于 2013-10-29T17:53:32.743 回答
1
std::ifstream in("in.txt");
std::ofstream out("out.txt", std::ios_base::out | std::ios_base::app);

for (std::string str; std::getline(in, str); )
{
    out << str;
}
于 2013-10-29T17:43:11.997 回答