【问题标题】:Input (as a condition) terminates when the value is entered输入(作为条件)在输入值时终止
【发布时间】:2021-09-28 00:26:19
【问题描述】:

目标:

  1. 编写一个程序,首先输入一组名称和值对,例如 Joe 17 和 Barbara 22。
  2. 对于每一对,将名称添加到名为 names 的向量中,并将数字添加到名为 scores 的向量中(在相应的位置,以便如果 names[7]=="Joe" 则 score[7]==18)。

问题: 当输入值时,输入(作为条件)终止。

问题: 有没有办法避免它? 为什么会终止? 有没有更有效的方法?

#include <iostream>
#include <vector>

std::vector<std::string> names;
std::vector<int> values;
std::string name;
int value;

int main(){
    for (int i = 0; std::cin >> name >> value; i++){
        names[i] = name;
        values[i] = value;    
    }
}

【问题讨论】:

  • 在什么条件下循环应该终止?

标签: c++ for-loop input terminate


【解决方案1】:

您的向量是空的。您不能使用operator[] 访问任何元素,因为没有。 “终止”很可能是分段错误(您的操作系统停止您的程序,因为它试图访问不属于它的内存)。

您可以使用push_back() 方法附加到您的向量:

int main(){
    //you don't need any counter, so it's easier to use while loop:
    while (std::cin >> name >> value) {
        names.push_back(name);
        values.push_back(value);    
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多