将 (cin >> someVar) 的返回分配给 istream 变量时出错 C++
Error when assigning the return of (cin >> someVar) to an istream variable in C++
我刚刚开始学习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。
相关文章:
- 为什么istream不支持右值提取
- 将无符号char*转换为std::istream*C++
- 需要从 istream 和 ostream 派生 iostream
- 使用std::istream::peek()总是安全的吗
- EASTL矢量<向量<int>>连续的
- 使用 istream 参数读取的 istream 函数
- istream std::cin如何修改自定义istream缓冲区
- 为什么我在使用 istream 迭代器时会出现 seg 错误?
- 在清除 istream 之前,我不应该需要取消获取它吗?
- C++,如何根据运行时条件构造引用不同 istream 对象的对象?
- 如何将QByteArray转换为std::istream或std::ifstream?
- 逗号在重载 ostream 和 istream 在结构中分开
- 为什么 Clang std::ostream 写一个 std::istream 无法读取的双精度?
- 从函数返回 istream 的正确方法
- 阅读从 istream 到矢量的不同类型列表
- 关于 istream 中的错误处理的问题
- C++ 模板类无法修复 ostream 和 istream 函数
- 如何使 std::istream 从键盘获取输入(如 std::cin)?
- iStream 运算符跳过空格字符
- 如何在 c++ 中将 IStream 转换为 Base64 字符串