0

我有一个循环,我想在第一个 cin 按下回车键时退出,但我无法让程序正常工作。目前我有:

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

谢谢您的帮助!

4

2 回答 2

1

getline 是您的测试。getline 仅在有人按 Enter 时返回。

 // 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;
}
于 2013-05-08T02:15:07.173 回答
0

我不知道这是否会对您有所帮助,但您至少可以将其用作解决问题的可能方法。当我希望我的程序等待用户按 Enter 时,我通常会这样做:

cout << "Press <enter> to continue...";

// this ignore statement will wait until the user presses <enter>    
cin.ignore(numeric_limits<streamsize>::max(), '\n'); 

我希望它有所帮助。

于 2013-05-08T02:43:03.153 回答