4
它使用rdbuf
一個衆所周知的方法將數據流複製到另一個:使用rdbuf複製流於空輸入失敗
#include <iostream>
#include <fstream>
int main()
{
std::ifstream in{"/tmp/foo.txt"};
std::cerr << in.rdbuf();
std::cerr << "Done\n";
}
然而,這種斷裂(=設置壞位)我cerr
時/tmp/foo.txt
是空的。因此,不顯示Done\n
。
這是爲什麼?使用G ++/libstdC++/GNU Linux和Clang ++/libC++/OS X觀察。
完全沒有幫助的確:)有人碰巧知道爲什麼標準是這樣嗎? – akim
呃,這是cppreference中的一個錯誤,它設置了failbit(之前的[ostream.inserters]/9或/ 8)。儘管OP的結果是一樣的。 – Cubbi
@Cubbi哦,感謝您的糾正。我看到你在那裏修好了;我已經修改了我的答案。我的懶惰不會去標準文本。 –