如何向用户发出多个提示,具体取决于他们希望提示C ++的次数

时间:2014-10-21 04:08:46

标签: c++ string input reference cin

我正在用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 ++,因为变量必须是常量并声明。我对如何继续或如何实现这一点感到困惑。

1 个答案:

答案 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,但这样是基本的想法。