Jar*_*ile 1 c++ switch-statement visual-studio visual-c++
我正在使用Microsoft Visual Studio 2013
我目前有这个switch语句:
switch (option)
{
case 1:
getline(cin, newname);
cout << "What would you like your new username to be?\nName: ";
getline(cin, newname);
name = newname;
cout << "\nYour username is now '" << name << "' with your balance being $" << balance << "\n";
options();
break;
case 2:
cout << "\nOpenning cheat menu\n";
cheats();
break;
default:
cout << "\nExitting to main title...\n";
title();
break;
}
Run Code Online (Sandbox Code Playgroud)
你可以忽略案例2和默认情况,只是显示所以你知道这些案例是有效的.案例2和默认工作完全正常,但案例1表现得很奇怪.正如你在案例1中看到的,我有两个getline(cin,newname); 您可能认为我应该只有一个,但由于某种原因,我需要两个才能使此代码正常运行.
如果我只有其中一个代码跳过用户应该给出的输入.如果我有两个它正常工作.
我问过这个人他们也不明白,因此:为什么这样做.
显然你在输入缓冲区中有剩余的输入,包括换行符cin.当您使用其他输入操作时,会发生这种情况getline.它们通常不会消耗输入缓冲区中的所有内容.
取而代之的是额外的getline,你可以使用ignore,不过还好,这样做,在那里你前面做输入的地方.
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |