测试用户是否输入(同时仍在测试良好输入)

时间:2013-05-08 02:11:50

标签: c++ input

我有一个循环,我想在第一个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

感谢您的帮助!

2 个答案:

答案 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'); 

我希望它有所帮助。