如何解决 for 循环中潜在的 getline() 问题,数组的第一个索引未显示? [复制]
Posted
技术标签:
【中文标题】如何解决 for 循环中潜在的 getline() 问题,数组的第一个索引未显示? [复制]【英文标题】:How to solve potential getline() issue in a for loop, First index of an array isn't showing up? [duplicate] 【发布时间】:2019-06-29 17:57:49 【问题描述】:我正在创建一个包含术语和定义词典的程序。它需要我创建两个输入长度的字符串数组。然后提示用户分别输入术语和定义。它有 2 个功能,主要功能(作为输入功能)和输出功能。我已经包含了我的代码。
我的问题是我得到的输出,它似乎无法将术语的索引 0 识别为任何内容。它跳过它并将所有内容都放在一个索引中。我认为这与我的 getline() 函数有关。
我试过 cin.ignore() 并且只删除每个字符串的第一个字符。
#include <iostream>
#include <string>
using namespace std;
//Main acts as the input function
int main()
//Declarations
void output(string* terms, string* definitions, int numEnteries);
string* terms;
string* definitions;
int numEnteries;
//Input
cout << "How many terms would you like in the dictionary?: " << endl;
cin >> numEnteries;
//Making the arrays the size the user wants
terms = new string[numEnteries];
definitions = new string[numEnteries];
//Inputs for both terms and definitions
//I think the issue may be in this loop, I may be wrong though
for (int i = 0; i < numEnteries; i++)
cout << "Enter term " << (i+1) << ":";
getline(cin, terms[i]);
cin >> ws;
cout << "Enter the definition for '" << terms[i] << "': ";
getline(cin, definitions[i]);
cin >> ws;
//Calling the output function
output(terms, definitions, numEnteries);
return 0;
void output(string terms[], string definitions[], int numEnteries)
cout << "You entered: " << endl;
//Outputting the terms and definitions in order
for (int i = 0; i < numEnteries; i++)
cout << (i+1) << ". " << terms[i] << ": ";
cout << definitions[i] << endl;
//Deleting the "new" arrays
delete[] terms;
delete[] definitions;
我希望输出是一个不错的列表,例如: 1.“第 1 项:定义 1” 2.“第 2 项:定义 2” ...等
但相反,我得到: 1. : 第 1 学期 2. 定义 1:第 2 学期 3. def 2:第三学期
【问题讨论】:
【参考方案1】:看起来你基本上忘记了一个
//Input
cout << "How many terms would you like in the dictionary?: " << endl;
cin >> ws;
输入号码后。添加后一切似乎都按预期工作,请参阅here。
【讨论】:
这似乎有帮助,但现在我遇到了一个奇怪的间距问题。在我输入输入的数量后,它会提示我输入第一个术语,但不会打印“输入术语 1”这一行,直到我输入其他内容并按 Enter 后。然后将以下输入推回错误的打印行。以上是关于如何解决 for 循环中潜在的 getline() 问题,数组的第一个索引未显示? [复制]的主要内容,如果未能解决你的问题,请参考以下文章