将 (cin >> someVar) 的返回分配给 istream 变量时出错 C++

Error when assigning the return of (cin >> someVar) to an istream variable in C++

本文关键字:gt istream 变量 分配 C++ 出错 cin someVar 返回      更新时间:2023-10-16

我刚刚开始学习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的结果分配给布尔值,但会产生错误,并说"类型的布尔和iStream不兼容"。然后,我尝试了以下作业:

istream inputSuccessful = cin >> repetitions;

然而,这产生了一个错误,说" basic_istream :: basic_istream(const basic_istream&amp;)已删除"。

我现在有以下问题:

1)当使用cin >> someInt(将整数someInt用作目标/参数)时,如果用户用户,您应该期望什么行为(目标变量,返回值,下一个呼叫的行为,...)输入没有领先数字的单词(即不能解析为整数)?

2)如何将cin >> someInt的结果保存在变量中?它必须是什么类型?该值与布尔表达式有何关系?

此声明

istream inputSuccessful = cin >> repetitions;

要求将cin的副本纳入inputSuccessful。复制构造函数已删除用于流的流,因此您获得的错误。但是,复制或参考cin的参考是毫无意义的,因为您可以直接使用cin进行参考。

您应该将变量bool改为:

bool inputSuccessful(cin >> repetitions);

现在,如果读取repetitions成功,则inputSuccessful将包含true,否则false否则。此Q&amp; a。

中描述了这种工作的方式