我只是在学习数组,而我的书几乎没有解释如何输入二维字符串数组。这是我的书推荐的代码:
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”
再次,我是初学者,我不明白为什么它不能正常工作。谢谢!
答案 0 :(得分:1)
问题在于混合cin
和getline
。格式化输入(使用&gt;&gt;运算符)和无格式输入(getline是一个示例)不能很好地一起使用。你一定要仔细阅读它。 Click here for more explanation
以下是您的问题的解决方案。
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;
}