无法按回车键完成 do-while 循环
Can't finish the do-while loop by pressing enter key
我想在按enter键时完成do-while循环。你有什么办法解决这个问题吗?我试图检查输入键的ASCII码,但没有成功。
do{
for(int dongu=0;dongu<secimSayi;dongu++)
{
cout<<"-";
sleep(1);
if(dongu==secimSayi-1)
{
cout<<">"<<endl;
}
}
for(int dongu2=0;dongu2<secimSayi;dongu2++)
{
cout<<" ";
}
for(int dongu3=secimSayi;0<dongu3;dongu3--)
{
cout<<"-bb";
sleep(1);
if(dongu3==1)
{
cout<<"<"<<endl;
}
}
}while(getchar()== 'n'); //I want to end this do-while loop when I pressed ENTER
我不相信c++中有一个标准的解决方案,这通常不是标准控制台程序的工作方式。
最标准的方法是使用线程,其中一个线程等待一行被读取,然后通过设置std::atomic<bool>
向主线程发送信号。
(见示例)
另一个解决方案可能是根据操作系统寻找正确的库。在linux上,您可以使用护士,在windows上,也有支持。这样还可以更好地控制程序的输出。
线程方法的示例:
#include <iostream>
#include <thread>
#include <chrono>
#include <atomic>
class WaitForEnter
{
public:
WaitForEnter() : finish(false)
{
thr = std::thread([this]() {
std::string in;
std::getline(std::cin, in);
finish = true;
});
}
~WaitForEnter()
{
thr.join();
}
bool isFinished() const { return finish; }
private:
std::atomic<bool> finish;
std::thread thr;
};
int main()
{
WaitForEnter wait;
while (! wait.isFinished())
{
std::cout << "." << std::flush;
std::this_thread::sleep_for(std::chrono::seconds(1));
}
std::cout << "nfinishedn";
}
相关文章:
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 即使没有满足他们的条件,我也无法通过一些 do-while 循环
- 如何使用 do while 循环确定最高值和最低值
- do while 循环中的 if 语句以 yes 或 no 结尾
- 带有开关语句的 do-while 循环 -- 无穷循环错误
- 为什么当我输入一个被接受的数字时,我的 do-while 循环没有中断?
- 为什么我的 Do-while 循环无法在C++中运行菜单
- 如果语句不会在 do - while 循环中运行
- 如何在c++中读取do-while循环中的空白
- 将嵌套的 for 循环更改为 do-while 循环
- 如何修复不会在退出选择时终止的 do-while 循环
- 为什么这个do-while循环每隔一个循环只写入数组?
- C++ do/while 循环和 if/else: 骰子游戏 -- 第 75 行错误:"Cout"之前的预期"While" -- 如何解决这个问题?
- 卡在链表中的无限 Do-while 循环中
- 使用基本 do-while 循环求解泊松方程
- do-while循环不会退出C
- 如何在C++中使用带有"do while"循环的计数器?
- 无休止的 do while 循环C++代码
- 是否有任何函数可用于在 c++ 编程中传输流程,以替代 while 或 do while 循环
- C++:如何在 do while 循环中解决字符错误