我正在用C ++创建一个程序,允许用户输入他或她想要提示三个独立输入的次数,即。
how many would you like: 2
enter here: 123.45/N 32.45/W Los Angeles
enter here: 22.22/N 223.4/E Hong Kong
我获得三个独立输入的方法是创建三个字符串变量,并执行此操作:
cin << input1 << input2;
getline(cin, input3);
我在一个单独的文件中有一个解析器,它从前两个字符串中输入数字并对其进行一些计算。
我遇到的问题是可视化如何仅使用std库设置系统,我可以让用户输入他们想要输入位置的次数,然后让程序创建3个唯一的字符串I以后可以参考进行计算,并让cin / getline执行用户输入的次数。
我想到的一种方法是创建一个函数,它接受一个整数(用户输入的数量)并通过一个调用cin和getline的for循环。问题是,如何保存和引用用户输入的值以便稍后进行计算?即
void inputAmount(int n) {
for(int i = 0; i < n; i++) {
cin << input1 << input2;
getline(cin, input3);
}
}
其中n是用户想要输入的行数。我试图创建一个字符串数组并用(n * 3)元素初始化它,但这显然不适用于C ++,因为变量必须是常量并声明。我对如何继续或如何实现这一点感到困惑。
答案 0 :(得分:1)
您可以使用std::vector
代替数组。 std::vector
在编译时不需要大小。您的代码看起来像这样:
string input1, input2, input3;
int n; // number of lines
vector<string> v; // vector to hold the lines
// prompt user for number of lines
cout << "how many lines?" << endl;
cin >> n;
for (int i = 0; i < n; i++) {
cin << input1 << input2;
getline(cin, input3);
// parse and put back into input1, input2, etc. or some other variable as needed
v.push_back(input1);
v.push_back(input2);
v.push_back(input3);
}
对push_back()
的调用会将元素添加到vector
。您可以使用迭代器或[]
运算符(与数组相同)访问元素。最好创建一个struct
来将三个输入存储在一起,在这种情况下,您可以使用vector
而不是struct
参数化string
,但这样是基本的想法。