用户输入逻辑运算符或数字,如果输入字符或字符串,则无效

时间:2019-03-31 21:06:13

标签: c++

我一直试图将其编码为C ++的初学者程序,以帮助我更多地了解该语言,但我真的不知道该如何解决。

基本上,程序只需要接受'+','*','/','%'或数字,否则,如果用户输入字母或单词,则程序将说输入无效。

这是我到目前为止所做的

 #include <iostream>
 #include <string>
 using namespace std;

int main()
{
string x;

cout<<"Enter expression: ";
getline(cin,x);



if(x.find('*') != string::npos){

    cout<<"Multiplication";
}else if(x.find('/') != string::npos){

    cout<<"Division";
}else if(x.find('%') != string::npos){

    cout<<"Modulo";
}else if(x.find('+') != string::npos){

    cout<<"Addition";
}else{

    cout<<"Invalid!";
 }
return 0;
}

1 个答案:

答案 0 :(得分:0)

调用std::getline()后,可以将x放入std::istringstream中,然后根据需要从中读取整数和字符,例如:

#include <iostream>
#include <string>
#include <sstream>
using namespace std;

int main()
{
    string x;

    cout << "Enter expression: ";
    getline(cin, x);

    istringstream iss(x);
    int value1, value2;
    char op;

    if (iss >> value1 >> op >> value2)
    {
        switch (op)
        {
            case '*':
                cout << "Multiplication = " << value1 * value2;
                break;
            case '/':
                cout << "Division = " << value1 / value2;
                break;
            case '%':
                cout << "Modulo = " << value1 % value2;
                break;
            case '+':
                cout << "Addition = " << value1 + value2;
                break;
            default:
                cout << "Invalid operation!";
                break;
        }
    }       
    else
        cout << "Invalid expression!";

    return 0;
}