如何正确使用std :: istream

时间:2013-02-13 08:10:10

标签: c++ istream

我想做以下事情:

// 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()

1 个答案:

答案 0 :(得分:3)

由于is >> ch;is中提取字符,因此会修改流。因此,它不能在函数签名中const,这可能会导致看似无关的错误,因为没有完全匹配。将功能更改为std::istream &