【发布时间】:2018-02-14 20:43:58
【问题描述】:
我刚开始学习 C++ 作为一种附加语言,遇到了标题中提到的问题。这是我开始使用的代码:
#include "HelloWorldWriter.h"
#include <iostream>
using namespace std;
int HelloWorldWriter::getNumberOfRepetitions() {
cout << "Enter number of Hello Worlds: ";
int repetitions = 0;
if(cin >> repetitions){
if(repetitions > 0){
return repetitions;
}
} else{
return 0;
}
}
...
我假设cin >> repetitions 会将用户输入值存储到repetitions 中,如果用户输入了可以解析为整数的内容,则返回true,否则返回false。然后我尝试将cin >> repetitions 的结果分配给布尔值,但它产生了一个错误,说“类型 bool 和 istream 不兼容”。然后我尝试了以下作业:
istream inputSuccessful = cin >> repetitions;
然而这产生了一个错误,说“basic_istream::basic_istream(const basic_istream &) is deleted”。
我现在有以下问题:
1) 当使用cin >> someInt(以整数someInt 作为目标/参数)时,您应该期望什么行为(目标变量中的值、返回值、该运算符下一次调用期间的行为...) ,如果用户输入的单词没有前导数字(即不能解析成整数)?
2) 如何将cin >> someInt 的结果保存在变量中?它必须是什么类型的?该值与布尔表达式有何关系?
【问题讨论】:
-
for 2) 你不需要保存它,因为它只是返回一个你永远不需要保存的
cin的引用。唯一有用的(在这种特殊情况下)是您可以像在std::cin >> a >> b;中一样将调用链接到>>