【问题标题】:How could I terminate my program on c++ by pressing the special character '!'?如何通过按特殊字符“!”来终止我在 C++ 上的程序?
【发布时间】:2014-09-14 03:50:38
【问题描述】:

所以我正在为我的课堂作业制作一个 c++ 计算器,我需要能够通过按特殊字符 ! 来退出程序。我尝试了 do/while 循环、while 循环,甚至库 windows.h 中的 GetAsyncKeyState,但似乎没有任何效果。我的程序的主要功能如下所示:

   int main()
    {
       Stack<char> a;
       char * expression;
       expression=new char[30];
       char * temp;
       temp=new char[30];
       int result=0;
       bool flag=true;

       cout<<"Enter an Infix Expression:";
       cin>>expression;
       //some more code//
       .....
    }

有没有办法每当按下特殊字符 ! 时,将其存储在 char 变量表达式中并退出程序?或者只要按下该键,我该怎么做才能退出程序?

【问题讨论】:

  • 你的程序允许多线程吗?如果是,请将其编写为两个线程:一个轮询键盘,检查!并将项目添加到队列中,另一个用于解析队列。

标签: c++


【解决方案1】:

不好意思,我是新来的,不知道能不能在评论里写代码,所以就写个新答案

while(true)
{    
    cout<<"Enter an Infix Expression:";
    cin>>expression;
    if(string(expression).at(0) == '!')
       break;

    ... //do your things here
}
exit(0);
//try this, and tell me if it works. I think this is better than the last one

【讨论】:

  • 那行得通,非常感谢,我之前尝试过一个 while(true) 循环,但没有使用 string(expression),非常感谢它现在可以完美运行。
【解决方案2】:

您必须实现自己的“从标准输入读取内容”函数,该函数将监视! 并采取相应措施(可能通过直接调用exit() 或抛出异常)。我会提供更多信息,但您的问题并未要求提供具体信息。另外,你是如何解析表达式的?我问是因为 ! 恰好是阶乘运算符,您的用户可能会输入它。

【讨论】:

  • 我并没有真正要求具体,因为我不知道我可以使用什么其他方法来做到这一点,程序的重点基本上是一个计算器来确定反向 plosh 符号,基于存储在 char 表达式中的中缀表达式。然而,一旦用户按下“!”,该程序应该能够终止。但是,在这种情况下 stdin 函数将如何工作?如果您能帮我解释一下,我将不胜感激。
【解决方案3】:

你试过了吗?

   if(strcmp(expression, "!") == 0)
        exit(0);

【讨论】:

  • 我试过了,但没有成功,程序直接打开,甚至没有要求输入中缀表达式。有没有我可以放这个的特定地方?
  • 嗯,显然是在cin之后。我相信你知道这一点。试试这个:string(expression).compare("!") == 0
  • 是的,抱歉,只是想确保我正确使用它,你刚刚给我的那个可以工作,但只有一次,我需要程序能够循环直到'!'被按下。
猜你喜欢
  • 2010-11-12
  • 2018-05-11
  • 2016-08-26
  • 2023-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多