当我在 do while 循环 c++ 中使用计数器时字母被截断
letter getting cutt off when I use a counter in do while loop c++
我试图在我的 do while 循环中使用一个计数器,但如果我这样做,它会在第一次迭代中切断我的 getline 的第一个字母
这是 do while 循环..
do
{
cout << "Enter the name of your class: " << endl;
cin.get();
getline(cin, classnames[i]);
cout << "Enter how many units was the class: " << endl;
cin >> classunits[i];
cout << "Enter the grade you completed the class with: " << endl;
cin >> classgrades[i];
classgrades[i] = toupper(classgrades[i]);
i++;
} while (again());
例如,如果我输入 english
,'e'
将在第一次迭代中被截断,但任何下一次迭代 english
都会显示正常。
这只会在我添加 i++
时发生
我已经尝试了cin.ignore()
,但我似乎还是无法破解它!
正如其他人所提到的,cin.get() 提取并 returns 您要丢弃的输入流中的第一个字符。
删除 cin.get();
。它会读取您输入的第一个字符,甚至不会将其存储在任何地方,因此您输入的第一个字符不会存储在字符串中。
去掉开头的cin.get()
,在结尾加上cin.ignore()
:
do
{
cout << "Enter the name of your class: " << endl;
// cin.get(); // remove
getline(cin, classnames[i]);
cout << "Enter how many units was the class: " << endl;
cin >> classunits[i];
cout << "Enter the grade you completed the class with: " << endl;
cin >> classgrades[i];
classgrades[i] = toupper(classgrades[i]);
cin.ignore(); // add
i++;
} while (again());
我试图在我的 do while 循环中使用一个计数器,但如果我这样做,它会在第一次迭代中切断我的 getline 的第一个字母
这是 do while 循环..
do
{
cout << "Enter the name of your class: " << endl;
cin.get();
getline(cin, classnames[i]);
cout << "Enter how many units was the class: " << endl;
cin >> classunits[i];
cout << "Enter the grade you completed the class with: " << endl;
cin >> classgrades[i];
classgrades[i] = toupper(classgrades[i]);
i++;
} while (again());
例如,如果我输入 english
,'e'
将在第一次迭代中被截断,但任何下一次迭代 english
都会显示正常。
这只会在我添加 i++
我已经尝试了cin.ignore()
,但我似乎还是无法破解它!
正如其他人所提到的,cin.get() 提取并 returns 您要丢弃的输入流中的第一个字符。
删除 cin.get();
。它会读取您输入的第一个字符,甚至不会将其存储在任何地方,因此您输入的第一个字符不会存储在字符串中。
去掉开头的cin.get()
,在结尾加上cin.ignore()
:
do
{
cout << "Enter the name of your class: " << endl;
// cin.get(); // remove
getline(cin, classnames[i]);
cout << "Enter how many units was the class: " << endl;
cin >> classunits[i];
cout << "Enter the grade you completed the class with: " << endl;
cin >> classgrades[i];
classgrades[i] = toupper(classgrades[i]);
cin.ignore(); // add
i++;
} while (again());