我正在编写一个练习:
编写一个完整的程序,从用户读取整数,使用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 >>'
有什么想法吗?
答案 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。