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

标签 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 个唯一的字符串我以后可以引用计算,让它做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/

相关文章:

C++ 继承 : Templates Vs Pointers

c++ - 具有相同名称但参数类型不同的多个函数作为模板参数

c - 如何将用户输入存储为 c 中的变量?

python - 如何从python中的输入更改脚本

c++ - 有没有办法在没有冲突的情况下在Windows上注册热键?

c++ - 在 C++ 或 C++11 中重新抛出类型化异常

r - 如何根据拆分单元的一般格式拆分字符串?

Javascript String.fromCharCode 区分大小写吗?

C++ 字符串函数只返回某些字符

java - 输入并存储任意长的数字序列