有没有一种方法可以让我在不输入任何内容的情况下按下回车,并且代码会假设接下来要做啥?

Posted

技术标签:

【中文标题】有没有一种方法可以让我在不输入任何内容的情况下按下回车,并且代码会假设接下来要做啥?【英文标题】:Is there a way that I can press enter without inputting anything and the code will assume what to do next?有没有一种方法可以让我在不输入任何内容的情况下按下回车,并且代码会假设接下来要做什么? 【发布时间】:2020-03-17 06:38:47 【问题描述】:

我的任务是这样做:

"产品代码:(按回车键)

如果没有输入产品代码,系统只会显示另一个产品代码"

所以基本上我可以选择输入产品代码或按 Enter 键,然后会出现另一个产品代码,我的问题是如果用户选择按 Enter 键而不是输入代码,如何显示产品代码。

请注意,所有产品代码已经是程序的一部分,用户只需输入产品代码即可更改其值。

int main()
int productcode;

    system("CLS");
    cout << "Product Code : ";
    cin >> productcode;
    return 0;

*在尝试 Kanthan 的建议后更新

我想出了这个代码:

using namespace std;
int main()

    int d;
    int productcode;
    int p1;
    int d1;
    float v1, gt;
    char ans;
    d1=0;
    gt=v1=0;
    d=26;
    do
    char code[40];
    system("CLS");
    cout<< "Product code : ";
    cin.getline(code,40,'\n');
    productcode=atoi(code);
    if(code[0]=='\0')
    
        cout << '\n'<<"Random Product Code appears"<<'\n' << '\n';
        system("PAUSE");
    

    else if(productcode>410 && productcode<15059)
            switch(productcode)
            case 1001:
                d1=1;
                p1=0;
                cout << '\n' << "Product Code : " << productcode << " - Product - Product Price     Number of Cans: ";
                cin >>  p1;
                if(p1==0)d1=0;v1=0;   
                break;
            case 15058:
                system("CLS");
                cout << "Items Purchased:" << '\n';
                if(d1==1)
                    
                        v1=p1*25;

                        cout << "1001 - Product - Product Price x " << p1 << " pc/s = " << v1 << '\n';
                    
                lines();
                gt=v1;
                cout << "Grand Total : " << gt << " USD" << '\n' << flush;  
                system("PAUSE");
                system("PAUSE");
                break;
            case 8223:
                int mrd;
                mrd=3;
                do
                    system("CLS");
                cout << "Are you sure that you want to go? Y/N: " << '\n';
                cin >> ans;
                if (ans=='Y'||ans=='y')
                
                d=27;
                mrd=4;
                cout << '\n' << "Your total sales is " << gt << " USD." << '\n';
                system("PAUSE");
                
                else if (ans=='N'||ans=='n')
                
                    mrd=4;
                    cout << '\n' << "Your total sales is at " << gt << " USD." << '\n' << flush;
                    system("PAUSE");
                
                else
                
                    system("CLS");
                    cout << "Wrong input. Please try again." << '\n' << flush;
                    system("PAUSE");
                
                while(mrd<4);
                break;  
            default:
                system("CLS");
                    cout << "Product Code input is incorrect. Please try again." <<'\n' << flush;
                    system("PAUSE");
                    break;              
                
        
    else 
        system("CLS");
                    cout << "Product Code input is incorrect. Please try again." <<'\n' << flush;
                    system("PAUSE");
       

    while(d<27);


我现在的问题是即使 code[0]=='\0' 不正确,“随机产品代码出现”仍然显示。

【问题讨论】:

您需要使用std::getline输入整行,然后根据该行是否为空进行操作。如果不为空,则可以使用 stoi 转换为 int。 带有“如果”的措辞可能会误导您。你知道循环的概念吗? @M.M ,我可以知道一个代码示例程序如何检测该行是否为空吗? @Bobby 使用std::stringempty() 成员函数 【参考方案1】:

你可以这样做

#include <iostream>
#include <stdlib.h>


int myisdigit(const char *str);

int main()

    char str[40];
    int code;

    std::cout<<"Enter Product code:";
    std::cin.getline(str,40,'\n');

    if(str[0]=='\0')
    
        std::cout<<"Next Product";
    
    else
    
        if(!myisdigit(str))
        
            std::cout<<"Enter Proper Code";
            exit(1);
        
        code=atoi(str);
        std::cout<<"Product Number:"<<code;
    


int myisdigit(const char *str)


    while(*str)
    
        if( ! ( ( ( *str ) >= '0' ) && ( (*str) <='9' ) ) )
            return 0;

        str++;
    

    return 1;

或者如果您想使用std::string,请在代码中进行一些更改,例如

    std::string mystr;
    int code;
    const char *str;

    std::cout<<"Enter Product code:";
    std::getline(std::cin,mystr);

    str=mystr.c_str();

【讨论】:

感谢您的建议,但我遇到了一个新问题。请检查更新状态。 @Bobby 请提供一些有关您如何提供输入的信息

以上是关于有没有一种方法可以让我在不输入任何内容的情况下按下回车,并且代码会假设接下来要做啥?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在不安装包的情况下按字母顺序排列 package.json?

如何在不使用输入元素的情况下捕获 Vuejs 中的任何按键事件

如何在不发送任何内容的情况下检查频道是不是已满[重复]

我可以在不重置浏览器状态的情况下按顺序运行多个 RSpec/Selenium 测试吗?

如何在不按下按钮的情况下自动处理 <textarea> 的内容?

js - 在不指定元素的情况下模拟按键