3

C++ でテキスト ファイルを開き、そのすべての行を別のテキスト ファイルに追加するにはどうすればよいですか? ファイルから文字列への個別の読み取りと、文字列からファイルへの書き込みのほとんどのソリューションを見つけます。これをエレガントに組み合わせることができますか?

両方のファイルが存在するとは限りません。各ファイルにアクセスするときは、bool を返す必要があります。

これがすでにトピックから外れている場合は申し訳ありません:複数のプログラムが同時にこれを実行できるという意味で、テキストコンテンツをファイルに追加することは競合しません(行の順序は問題ではありません)? そうでない場合、(アトミックな)代替手段は何ですか?

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 に答える