如何在C++中对字符串应用算术运算?

15 浏览
0 Comments

如何在C++中对字符串应用算术运算?

我想创建一个程序,它可以读取包含两个数字和一个运算符的字符串,并打印出结果。它在算术运算符上一直显示错误。例如,如何将两个字符串相加呢?

#include 
#include 
using namespace std;
int main() {
    string number1;
    string number2;
    string operation;
    string answer;
    
    cout << "请输入带有相应操作符的数字:" << endl;
    cout << "数字1:";
    cin >> number1; 
    cout << "数字2:";
    cin >> number2;
    cout << "操作符:";
    cin >> operation;
    
    if (operation == "+") {
        answer = number1 + number2;
        cout << "和为:" << answer << endl;
    } else if (operation == "-") {
        cout << "无法执行减法运算" << endl;
    } else if (operation == "*") {
        cout << "无法执行乘法运算" << endl;
    } else if (operation == "/") {
        cout << "无法执行除法运算" << endl;
    } else {
        cout << "无效的输入" << endl;
    }
    
    getchar();
    return 0;
}

0
0 Comments

如何在C++中对字符串应用算术运算?

问题出现的原因是需要将输入类型更改为数值类型,这样你才能读取实际的数字,而不是它们的字符串表示。如你所见,在C++中,字符串类型只重载了加号(+)运算符,用于字符串的拼接。因此,将输入类型从字符串(string)更改为浮点数(double)类型可以解决这个问题。

解决方法之一是按照现在的方式读取字符串,然后将其转换为数字(参考链接https://stackoverflow.com/questions/194465)。但这样做只是增加了不必要的工作,除非你想要检测无效的数值输入(例如1234abc8),在这种情况下,读取字符串,然后解析和检查无效输入是一个好主意。

另一种解决方法是将字符串转换为浮点数。你可以参考链接https://stackoverflow.com/questions/4754011了解如何进行转换。

总结起来,要在C++中对字符串应用算术运算,你可以将字符串类型更改为浮点数类型,或者通过字符串转换为数值进行运算。

0
0 Comments

你的问题是因为在示例中,number1和number2都是字符串,而字符串不支持将值相加。你可以简单地将number1、number2和answer的类型都改为int:

int main()
{
    int number1;
    int number2;
    string operation; // 也可以将其改为char
    int answer;
    // ...

如果你真的想使用字符串,可以使用中的字符串流(stringstreams):

http://www.cplusplus.com/reference/sstream/stringstream/stringstream/

编辑1: 如果你关心小数点后的值,float可能是更好的类型。

对于除法,int可能无法产生你想要的结果。

基本上,这是一个我在作业中遇到困难的问题。问题是,创建一个程序,读取包含两个数字和一个运算符的字符串,并打印出结果。字符串由你的程序进行解释。

在这种情况下,你需要使用字符串流(stringstreams)。

0