当我在 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 您要丢弃的输入流中的第一个字符。

http://www.cplusplus.com/reference/istream/istream/get/

删除 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());