将 cin 与数组一起使用

Using cin with arrays

我正在尝试获取两个数组的用户输入。我收到错误,没有运算符匹配这些操作数。为什么我的 cin 函数不起作用?

#include <iostream>
using namespace std;
int main()
{
    string canadates[5];
    int votes[5];
    double percent[5];
    int i;
    while (i <= 5) {
        cin<< canadates << votes;
    }
}

你的代码有很多问题。

首先,cin 使用与 cout 不同的运算符。

cin >> canadates >> votes;

其次,也是编译器错误的一部分 - 您无法读入整个数组。您需要读入数组的 单个元素 。如何访问单个数组元素?

cin >> canadates[i] >> votes[i];

第三,你的循环是无限循环,因为i永远不会改变。

while (i <= 5) {
    cin >> canadates[i] >> votes[i];
    i++;
}

第四,i被单元化了——它有不确定的值。总是初始化你的变量。

int i = 0;
while (i <= 5) {
    cin >> canadates[i] >> votes[i];
    i++;
}

第五,C++中的数组使用从零开始的索引,这意味着第一个可能的索引是0,最后一个可能的索引是arraySize - 1。访问 5 元素数组中的元素 5 是错误的。

int i = 0;
while (i < 5) {
    cin >> canadates[i] >> votes[i];
    i++;
}

如果使用 for 循环,第 3 点和第 4 点更容易避免。它的语法让您记住所有这些小事。

for(int i = 0; i < 5; i++) {
    cin >> canadates[i] >> votes[i];
}

看到了吗?两个问题都在一行中解决,你需要 3 个语句,编译器会检查(但编译器不会阻止你搬起石头砸自己的脚——3 个语句中的每一个都可能是空的,或者你仍然可能错误地使用它们)。如果你在心理上定下 i <= something 高度可疑的规则,你也可以更轻松地避免第 5 次。


我不想阻止您编程,但 C++ 是一种很难的语言。如果没有 a good book/tutor,你将无法学习它,尤其是“代码看起来合理”或“代码编译”在这里毫无意义。