ファイルを読むための次のコードは、即座に作業して完了しました。なぜこの行は無限ループですか?
auto copy = [&](const FileName &src, std::ofstream &dst)
{
std::ifstream r(src);
std::string line;
while (std::getline(r, line)) { dst << line << std::endl; }
};
src
dst
が働いて出力ストリームで、小さなファイルです。ループを次のように変更した場合:
while (std::getline(std::ifstream(src), line)) { dst << line << std::endl; }
私のプログラムはwhileループで永遠に実行されていました。なぜ無限ループですか?私はXcode C++ 11を使用しています。
出力することができます。私にとっては、常に最初の行だけを読んでいるように見えます。なぜなら、常に新しいifstreamを作成するように見えるので、ポインタ/イテレータは保持されず、次の行に設定されないからです。 – icbytes
これは質問には触れませんが、実際には 'std :: endl'が行う余分なものが必要ですか? '' \ n ''は行を終わらせます。 –