我正在解决一个基本问题,但我被困住了。我不使用C ++,但我必须......
我正在创建一个接受输入(双重)并执行一些数学运算的程序(这对此问题并不重要)。
我需要通过CMD线输入所有输入。 我知道我可以用这个:
cin >> v1 >> v2 >> v3; //etc
但我不知道该计划将采用多少个数字。当用户设置特定号码时,程序将停止。
答案 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(特定数字)内。您可以通过减少比较右侧的数字来减小范围。如果我们处理整数,那么比较将涉及两个值而不是范围。