0

我想做以下事情:

// 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’

我需要做什么才能完成这项工作?

[编辑]
只是一个警告:operator>>提供格式化输出 - 它会丢失空白字符(制表符、换行符等)。要访问所有字符,您需要使用get().

4

1 回答 1

3

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

于 2013-02-13T08:16:50.713 回答