我正在用 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 个唯一的字符串我以后可以引用计算,让它做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++,因为该变量必须是常量并已声明。我只是对如何继续或如何实现这一目标感到困惑。
最佳答案
您可以使用 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
将三个输入存储在一起可能会更好,在这种情况下,您可以使用 struct
而不是参数化 vector
一个 string
,但这是基本思想。
关于c++ - 如何向用户发出多个提示,具体取决于他们希望被提示的次数 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26478745/