错误:不匹配'operator>>'对于std :: cin

时间:2016-06-27 03:47:57

标签: c++ windows codeblocks

我正在编写一个练习:

  

编写一个完整的程序,从用户读取整数,使用doubleNumber()函数将其加倍,然后将doubled值输出到控制台。

#include <iostream>

int doubleNumber(int x)
{
    return 2*x;
}

int main()
{

    int a;
    std::cout << "Enter an integer :" ;
    std::cin >> a >> std::endl;
    std::cout << doubleNumber(a) << endl;
    return 0;
}

编译时遇到的错误是:

error: no match for 'operator >>'

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

std::endl实际上做的是,将新行写入流('\n'),然后使用std::flush刷新流,将缓冲区中的所有内容写入屏幕

请注意,换行符,这意味着它不适合输入,因此不应该用于此类。

另外,您忘记在第二行输出中std::之前指定endl

答案 1 :(得分:2)

你有两个问题。你错过了endl的std。这对于识别范围是必要的,因为endl来自std。

你的另一个问题是当你使用cin时,不需要添加std :: endl。 std :: endl仅表示行的结尾(创建一个新行)。 cin命令仅接受输入,而std :: endl不是可以输入的变量。

如果您修复了这些问题,您的程序将运行良好。

固定代码:

#include <iostream>

int doubleNumber(int x)
{
    return 2*x;
}

int main()
{

    int a;
    std::cout << "Enter an integer :" ;
    std::cin >> a;
    std::cout << doubleNumber(a) << std::endl;
    return 0;
}

答案 2 :(得分:0)

你的最终endl应该是std :: endl;

同样在cin之后取出endl,cin只接受值,不需要添加换行符,那就是cout。