是否可以尝试从流中读取但不更改流本身(并返回bool是否成功)?
template <typename T> bool SilentRead (stringstream& s, T& value) {
stringstream tmp = s;
tmp >> value;
return tmp;
}
这不起作用,因为stringstream没有公共拷贝构造函数。 怎么办呢?
如果我们用istream替换stringstream,是否可以解决它?
答案 0 :(得分:2)
一般来说,这是不可能的。底层streambuf没有接口。但是,您可以创建一个streambuf包装器。您仍然无法对流进行不可破坏的读取,但您可以在streambuf包装上执行这些操作。
(streambuf包装器是std :: streambuf接口的一个实现,它将I / O转发到底层的streambuf)
答案 1 :(得分:1)
答案 2 :(得分:0)