1

我只是在学习数组,而我的书几乎没有解释如何输入二维字符串数组。这是我的书推荐的代码:

char lastName[6][50];

for(int i = 0; i < 5; i++)
{
  cout << "Enter candidates last name: ";
  cin.get(lastName[i], 50);
  cout << endl;
}


for(int j = 0; j < 5; j++)
{
  cout << lastName[i] << endl;
}

使用此代码,我只能输入一个姓名,程序的其余部分只是重复“输入候选人姓氏:”

我尝试的另一个代码是:

for(int i = 0; i < 5; i++)
{
 cout << "Enter candidates last name: ";
 cin >> lastName[i][50];
 cin.get(lastName[i], 50);
 cout << endl;
}

Same output code

此代码允许我输入正确数量的名称,但每个名称的第一个字符缺失。示例“Joe”给了我“oe”

再说一次,我是初学者,我不明白为什么它不能正常工作。谢谢!

4

1 回答 1

1

问题在于混合cingetline. 格式化输入(使用 >> 运算符)和未格式化输入(getline 就是一个例子)不能很好地配合使用。你绝对应该阅读更多关于它的信息。单击此处了解更多说明

这是您的问题的解决方案。 cin.ignore(1024, '\n');是关键。

char lastName[6][50];
for(int i = 0; i < 5; i++)
{
    cout << "Enter candidates last name: ";
    cin.get(lastName[i], 50);
    cin.ignore(1024, '\n');
}
for(int j = 0; j < 5; j++)
{
    cout << lastName[j] << endl;
}
于 2013-10-28T05:01:54.177 回答