未指定数量的输入c ++ CMD

时间:2015-10-24 17:14:25

标签: c++ line

我正在解决一个基本问题,但我被困住了。我不使用C ++,但我必须......

我正在创建一个接受输入(双重)并执行一些数学运算的程序(这对此问题并不重要)。

我需要通过CMD线输入所有输入。 我知道我可以用这个:

cin >> v1 >> v2 >> v3; //etc

但我不知道该计划将采用多少个数字。当用户设置特定号码时,程序将停止。

2 个答案:

答案 0 :(得分:0)

我看到了两种可能的解决方案。

一个。您可以像这样输入std :: string:

std::string input;
std::getline(std::cin, input);

这样你就可以获得带有输入的整个字符串,然后你可以解析这个字符串并获取所有数据(搜索空格等等);

B中。您可以使用STL向量并在循环之前进行操作直到收到某些内容,如下所示:

std::vector<int> vec;
bool stop = false;

while (!stop) {
    int i;
    std::cin >> i;
    if (i == -1) { // for example -1 is "stop"
        stop = true;
    } else {
        vec.push_back(i);
    }
}

然后使用vector访问和解析数据。

答案 1 :(得分:0)

以下是否与您要找的相似?

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    double num{ 0.0 }, specificNum{10.0};
    vector<double> vec(0);

    do {
        cout << "Enter number: ";
        cin >> num;
        vec.push_back(num);
    } while (!(abs(num - specificNum) < 0.5));

    system("pause");
    return 0;
}

要求用户输入双精度,直到该双精度落在10.0的+/- 0.5(特定数字)内。您可以通过减少比较右侧的数字来减小范围。如果我们处理整数,那么比较将涉及两个值而不是范围。