我想做以下事情:
// I want 'is' to be either opened file or stringstream ...
void ParseTokens(const std::istream &is, std::vector<TokenClass> &vToks)
{
char ch;
...
is >> ch;
...
}
编译器抱怨:
error: ambiguous overload for ‘operator>>’ in ‘is >> ch’
我需要做些什么来完成这项工作?
[edit]
只是警告:operator>>
提供格式化的输出 - 它会丢失空白字符(标签,换行符等)。要访问所有字符,您需要使用get()
。
答案 0 :(得分:3)
由于is >> ch;
从is
中提取字符,因此会修改流。因此,它不能在函数签名中const
,这可能会导致看似无关的错误,因为没有完全匹配。将功能更改为std::istream &
。