【发布时间】:2013-11-06 08:44:55
【问题描述】:
我正在编写一个程序,我试图实现以下代码:
int main(){
string inputcmd;
while (getline(cin, inputcmd)){
cout << "TYPE A COMMAND" << endl;
cin >> inputcmd;
cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');
if (inputcmd == "make"){
cout << "MAKING NEW PROJECT" << endl;
get_project(cin);
}
else if (inputcmd == "retrieve"){
cout << "RETRIEVING YOUR PROJECT" << endl;
}
}
return 0;
}
我正在尝试使用 cin.ignore 属性来清除在给定时间当前驻留在缓冲区中的换行符的缓冲区,但是当我尝试编译时,它给了我一堆乱码编译器错误?为什么会这样,我该如何解决?
【问题讨论】:
-
当您发布有关构建错误的问题时,请始终包含完整且未经编辑的错误日志。无论它对您来说似乎是胡言乱语,还是很多,它都可以帮助我们了解正在发生的事情。
-
也发布错误..
-
顺便说一句,您确实包含
<limits>,这是std::numeric_limits所需要的吗? (关于发布代码的另一个提示,请创建一个包含问题的SSCCE,然后完整发布。) -
除了错误消息本身之外,您还缺少您似乎使用过的包含和使用指令。请提供SSCCE
-
我包含了限制,现在它可以编译了。但是现在由于某种原因它卡在了第一个主 while 循环中,程序运行并询问 TYPE A COMMAND 但这就是它所要求的全部内容,有时您必须按几次换行符才能再次要求它。我该如何解决这个问题?