我有一个循环,我想在第一个cin的enter键击中退出,但我无法让程序正常工作。目前我有:
while(running) {
cout << "enter word: ";
getline(cin,starting);
if(ladder.validWord(starting))
running = false;
else if(starting.empty())
return 0;
else
cout << "invalid word...\n";
}
我需要提取好的输入,同时仍然测试输入键命中。目前这仍然退出程序,并给我一些奇怪的混乱(在程序的最后)似乎从我的命令行目录中删除,如:
g-dev@gdev-virtualBox:~/folder/ComputerProgramming/Wor$ dLadder
感谢您的帮助!
答案 0 :(得分:1)
getline是你的考验。 getline仅在有人点击进入时返回。
// extract to string
#include <iostream>
#include <string>
#include <cstdlib>
std::string getInput(std::string prompt){
std::string name;
std::cout << prompt;
std::getline (std::cin,name);
if (name == "")
exit(1);
return name;
}
main ()
{
std::string name;
while (name != "poo"){
name = getInput("enter someting good:\n");
}
std::cout << "Hello, " << name << "!\n";
return 0;
}
答案 1 :(得分:0)
我不知道这是否会对您有所帮助,但您至少可以将其作为解决问题的方法。当我希望我的程序等待用户输入时,这就是我通常做的事情:
cout << "Press <enter> to continue...";
// this ignore statement will wait until the user presses <enter>
cin.ignore(numeric_limits<streamsize>::max(), '\n');
我希望它有所帮助。