【问题标题】:How can I take input from user and store it in a vector? [duplicate]如何从用户那里获取输入并将其存储在向量中? [复制]
【发布时间】:2020-07-04 07:54:32
【问题描述】:

无法从用户那里获取输入并将其存储在向量中。怎么做? 刚开始学习编码。

#include<iostream>
#include<vector>

int main() {
int total_even = 0;
int product_odd = 1;
std::vector<int>numbers;
std::cout << "Enter 6 digits: ";
std::cin >> numbers;

for (int i = 0; i < numbers.size(); i++) {

    if (numbers[i] % 2 == 0) {

        total_even = total_even + numbers[i];
    }
    else {
        product_odd = product_odd * numbers[i];
    }
}
std::cout << "Sum of numbers is: " << total_even << "\n";
std::cout << "Product of odd numbers is: " << product_odd << "\n";
return 0;
}

【问题讨论】:

  • 开头的向量大小为 0 - for 循环不起作用。

标签: c++ vector input visual-studio-2019


【解决方案1】:

这是在向量中获取输入的方式:

std::vector<int> numbers;
for(int i = 0; i < /*6 in your case*/; i++) {
    int temp;
    if(scanf("%d",&temp)) {
        numbers.push_back(temp);
    }
    else {
        std::cerr << "something wrong with vector" << "\n";
    }
}

另一种方法是使用 for-each 循环。但是,在这种情况下,您需要事先知道尺寸:

std::vector<int> numbers(size);
for(auto& elem : numbers) {
    std::cin >> elem;
}

欲了解更多信息,请查看How does c++ std::vector work?

【讨论】:

  • 你也可以使用 cin, if (std::cin &gt;&gt; temp) numbers.push_back(temp); else { ... } 进行检查,注意能够再次读取 int 需要清除标志并绕过无效的 int,例如std::cin.clear(); std::cin.ignore(std::numeric_limits&lt;std::streamsize&gt;::max(), '\n');
  • 我在stackoverflow.com/a/56585205/2458991中给出了类似案例的答案
猜你喜欢
  • 1970-01-01
  • 2014-02-25
  • 1970-01-01
  • 2021-09-15
  • 2013-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-26
相关资源
最近更新 更多