获取输入时出现间歇性问题

Asi*_*sif 0 c++

有人可以向我解释这段代码有什么问题吗?有时它会起作用,即如果我在终端上输入 5, 5, 5, -1,它会返回 15。但其他时候,它会返回 0。

#include <iostream>
#include <vector>

using namespace std;

int main() {
    int input; 
    vector<int> input_vector;
    cout << "Enter -1 when done" << endl;;
    
    cout << "Your int: ";
    cin >> input;
    while (input != -1) {
        input_vector.push_back(input);
        cout << "Your int: ";
        cin >> input;
    }

    int sum = 0;
    for (auto i : input_vector) {
        cout << "i: " << input_vector[i] << endl;
        sum += input_vector[i];
    }

    cout << "Sum: " << sum << endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Vic*_*out 6

您使用基于范围的表示法for (auto i : input_vector)来给出i数组中存储的实际值。但随后你将它用作input_vector[i]. 这是错误的:i是元素的值,而不是索引。所以替换input_vector[i]i.

for (auto i : input_vector) {
    cout << "i: " << i << endl;
    sum += i;
}
Run Code Online (Sandbox Code Playgroud)

请注意,现在您不再拥有索引,但为了计算总和,您不需要它。