gpt4 book ai didi

c++ - 如何在清除屏幕之前等待键盘输入(getchar 不工作)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:27:01 26 4
gpt4 key购买 nike

我正在尝试编写一个程序,在清除屏幕并移动到下一个屏幕之前,我会在其中显示一些内容。我正在使用 system("clear") 来清除屏幕。但我注意到它清除屏幕的速度太快了。我的意思是,即使我输入了 getchar() ,它也不会等待键盘输入并执行下一个命令。我想不通为什么!

这是我的暂停宏代码,它应该等待击键:

#define pause() \
do{ \
cout<<"Press any key to continue";\
getchar();\
} while(0);

下面是使用上述宏的代码,但下面的代码不会在清屏前等待按键!

void registerUser()
{
string uid,passwd;
cout <<"Enter UID: ";
cin >> uid;
cout<<" Enter Password: ";
cin>>passwd;
bool ret = addUser(uid,passwd);
if (ret == false)
{
cout<<"User "<< uid <<" already exists\n"; // This message is not displayed
}
else
{
cout<<"User " << uid <<" Successfully added\n"; // This message is not displayed
}
pause(); // Program does not wait here as expected
system("clear"); // Screen is cleared immediately !!
}

最佳答案

std::cin 从输入流(通常是 stdin)读取字符。它在读取分隔符时停止,默认分隔符是 \n

所以当它读取一个序列时,流中仍然有一个尾随换行符!

getchar() 将读取 \n,然后返回。这就是为什么没有停顿。您必须从流中删除换行符:

std::cin.ignore(); //Discards 1 character from the stream

关于c++ - 如何在清除屏幕之前等待键盘输入(getchar 不工作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38939254/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com