如何检查 cin 缓冲区是否包含相同的值 0.5 秒 (C++)

How to check If cin buffer contains the same value for 0.5sec (C++)

本文关键字:C++ 是否 何检查 检查 cin 缓冲区 包含相      更新时间:2023-10-16

我想制作一个程序,以便当我输入1时,它会无限次打印go ahead,就像那样 2 去左 3 去右。当我输入0它应该停止一切并打印!!!stop!!!

我已经尝试了很多东西,但我什至无法使1命令工作。请帮忙。

    #include "stdafx.h"
    #include<iostream>
   using std::cout;
   using std::cin;
   using std::endl;

    int main()
    {
        int value;
        cout << "Would you please enter the command " << endl;
        cout << " _______________________" << endl;
        cout << " 1- go ahead           |" << endl;
        cout << " _______________________" << endl;
        cout << " 2- make a left turn   |" << endl;
        cout << " _______________________" << endl;
        cout << " 3- make a right turn  |" << endl;
        cout << " _______________________" << endl;
        cout << " 4- go back            |" << endl;
        cout << " _______________________" << endl;
        cout << " 0- stop everything    |" << endl;
        cout << " _____________________________________________________" << endl;
        cin >> value;
        switch (value)
        {
        case 1:
            while (int value == 1)
            {
                cout << "  * go ahead " << endl;
                if (value == 0)
                {
                    break;
                }
            }
            break;
        case 2:
            cout << " * turn left " << endl;
            break;
        case 3:
            cout << " * turn right " << endl;
            break;
        case 4:
            cout << " * reverse " << endl;
            break;
        case 0:
            cout << " !!!Stop!!! " << endl;
            break;
        }

        return 0;
    }

for(value==1) 不是有效的C++语法,即使会,您的代码也会在输入
1 后无限打印"继续"。除此之外,您的switch案例正在检查 ASCII 1 而不是数字 1。将'1'更改为1

你需要用这样的循环来包围你的输入开关语句:

int value = 0;
do{
    cin >> value;
    switch(value){
        case 1:
            cout << "go ahead" << endl;
            break;
        case 2:
            cout << "turn left" << endl;
            break;
        case 3: 
            cout << "turn right" << endl;
            break;
        case 4:
            cout << "reverse" << endl;
            break;
        case 0:
            cout << "stop" << endl;
            break;            
    }    
}while(value!=0);

此代码将要求输入并在之后打印方向。

你有三个问题。 首先,'1'是字符文字,1是整数文字(我知道没有实现它们具有相同的值(。 您需要摆脱引号。

其次,for (int value == 1) C++无效。 您需要将其更改为 while (value == 1) .

最后,也是最重要的一点,循环内的任何内容都不允许value发生变化。 这将是一个无限循环(因此是未定义的行为(。 您需要在一个线程上运行无限循环,并在另一个线程上循环输入。

(另外,请不要使用using namespace std;(

删除 case 语句中的''

switch (value)
    {
    case 1:
        for (value == 1)
        {
            cout << "  * go ahead " << endl;
            if (value == 0)
            {
                break;
            }
        }
        break;
    case 2:
        cout << " * turn left " << endl;
        break;
    case 3:
        cout << " * turn right " << endl;
        break;
    case 4:
        cout << " * reverse " << endl;
        break;
    case 0:
        cout << " !!!Stop!!! " << endl;
        break;
    }