使用rdbuf复制流在空输入时失败
Copy streams using rdbuf fails on empty input
使用rdbuf
:将流复制到另一个流中是一种众所周知的方法
#include <iostream>
#include <fstream>
int main()
{
std::ifstream in{"/tmp/foo.txt"};
std::cerr << in.rdbuf();
std::cerr << "Donen";
}
然而,当/tmp/foo.txt
为空时,这会中断(=设置坏位)我的cerr
。结果,不显示Donen
。
为什么?使用G++/libstdc++/NGNU Linux和Clang++/libc++/OS X进行观察。
这似乎是定义的行为-参见例如。http://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt:
如果没有插入字符,则执行设置状态(故障位)
我同意这有点于事无补。
相关文章:
- 我应该如何在C++中使用结构体解决输入失败的问题?
- 多个输入的代码失败
- C ++回测问题:如何检查构造函数在假定失败时是否失败(给定输入的无效参数)
- boost::p rogram_options - 验证失败时,显示用户在错误消息中输入的值
- C++使用命令行输入 txt 文件,但打开文件失败
- Spirit X3,如何在非ASCII输入上失败
- 字符串流运算符输入失败
- C++:为什么这个字符串输入失败,而另一个没有
- std::getline(std::cin, string) 可能因键盘输入失败的方式
- 可视C 资本化功能因多个输入而失败
- c++ sort() 函数对于<algorithm>整数数组的大小(元素数)>10^7 个元素的大输入是否失败?
- FSTREAM在输入负数时失败
- 为什么我们总是检查输入是否失败而不检查输出
- C++,将输入字符串转换为数字,转换失败不应返回零
- 失败的输入帮助,国际和字符,C++
- 每当我输入长度为4的字符串时,下面的cpp代码就会崩溃(向量中的malloc失败)
- C++输入失败:单个语句中有多个输入
- C++失败的空输入变量
- 输入验证循环在第一次输入失败后无法正常工作
- 断言"输入"失败 - C++