我有一个定制的std::streambuf。就像是:
class mybuf : public std::streambuf {
...
virtual std::streambuf::int_type underflow() {
if(eof) {
return traits_type::eof();
}
...
}
...
std::istream stream(new mybuf(...));
Run Code Online (Sandbox Code Playgroud)
eof通过在underflow()函数上返回eof来设置流的标志。
如何设置badbit流的标志?该overflow()函数应该抛出异常吗?
抛出异常确实是正确的方法。
请参阅 的参考页std::ios_base::iostate,特别是:
badbit由以下标准库函数设置:
- ...
- 每个流 I / O 函数,如果关联流缓冲区的任何成员函数抛出异常(例如
sbumpc()、、、 等)xsputn()sgetc()overflow()- ...
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |