C++ getline(cin,变量)行为不端.网站上没有任何解决方案有帮助

C++ getline(cin, variable) is misbehaving. No solutions on the site have helped

本文关键字:任何 有帮助 解决方案 网站 行为不端 getline cin 变量 C++      更新时间:2023-10-16

我的代码相当简单。我有一个名为 promptUserInput 的方法,在 UtilityFunctions.h 中定义;它是在UtilityFunctions.cpp实现的。

我的主要方法包括UtilityFunctions.h.我已经正确编写了我的 makefile,它可以毫无问题地编译。

我的主要方法的第一行是:

string input = promptUserInput();

以下是promptUserInput函数的实际实现:

/* Prompts user to enter expression */
string promptUserInput()
{
    string userInput;
    cout << "> ";   
    getline(cin, userInput);
    return userInput;
}

但是当程序运行时,它不显示>符号。相反,有一个空行等待用户输入。我输入一些任意字符,按 Enter 键,然后出现>符号。这些对我来说都没有意义。这是怎么回事?

std::cout使用缓冲输出,应始终刷新。您可以通过使用 std::cout.flush()std::cout << std::flush 来实现此目的。

您还可以使用 std::cout << std::endl ,它写入换行符然后刷新,但换行符可能无法满足您的意图。