【发布时间】:2022-01-19 05:30:47
【问题描述】:
我正在尝试获取两个以空格分隔的变量并遇到此错误,以及 [no operator ">>" 匹配这些操作数] 和 [syntax error: ">>"]。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
...
void player(char array[][ROWS_AND_COLUMNS], char letter)
{
bool element_occupied = false;
do
{
int row = 0;
int column = 0;
cout << "Enter player " << letter << ", row and column:";
cin >> inputValidate(row, 1, 3) >> inputValidate(column, 1, 3);
if (array[(row - 1)][(column - 1)] == '*')
{
array[(row - 1)][(column - 1)] = letter;
element_occupied = true;
}
else
{
cout << "Sorry, that spot is taken." << endl;
element_occupied = false;
}
} while (element_occupied == false);
}
inputValidate() 取输入、最小值和最大值,如果是 1、2 或 3,则返回输入值。
编辑:
int inputValidate(int user_number, int lowest, int highest)
{
while (!(cin >> user_number) || (user_number < lowest || user_number > highest))
{
cout << "Error. Enter a number from " << lowest << " to " << highest << ": ";
cin.clear();
}
return user_number;
}
这是一个井字游戏。
【问题讨论】:
-
用你自己的话来说,
cin >> inputValidate(row, 1, 3) >> inputValidate(column, 1, 3);是什么意思?特别是:应该读入哪些变量(由于从标准输入读取数据而改变)? -
请显示实际且完整的错误信息。
inputValidate()实际上是什么样子的?更重要的是,它究竟返回了什么?inputValidate()是普通函数还是流操纵器?我感觉我知道答案,但我需要查看更多代码才能确定。请提供minimal reproducible example。 -
cin 应该接收两个以空格分隔的整数并将它们读入行和列。 inputValidate 是一个 int 函数;我已经附在上面了。
-
代码是“C2678 binary '>>': 没有找到接受'std::istream' 类型左侧操作数的运算符(或者没有可接受的转换)”。