如何在C++中对字符串应用算术运算?
如何在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; }
如何在C++中对字符串应用算术运算?
问题出现的原因是需要将输入类型更改为数值类型,这样你才能读取实际的数字,而不是它们的字符串表示。如你所见,在C++中,字符串类型只重载了加号(+)运算符,用于字符串的拼接。因此,将输入类型从字符串(string)更改为浮点数(double)类型可以解决这个问题。
解决方法之一是按照现在的方式读取字符串,然后将其转换为数字(参考链接https://stackoverflow.com/questions/194465)。但这样做只是增加了不必要的工作,除非你想要检测无效的数值输入(例如1234abc8),在这种情况下,读取字符串,然后解析和检查无效输入是一个好主意。
另一种解决方法是将字符串转换为浮点数。你可以参考链接https://stackoverflow.com/questions/4754011了解如何进行转换。
总结起来,要在C++中对字符串应用算术运算,你可以将字符串类型更改为浮点数类型,或者通过字符串转换为数值进行运算。
你的问题是因为在示例中,number1和number2都是字符串,而字符串不支持将值相加。你可以简单地将number1、number2和answer的类型都改为int:
int main() { int number1; int number2; string operation; // 也可以将其改为char int answer; // ...
如果你真的想使用字符串,可以使用
http://www.cplusplus.com/reference/sstream/stringstream/stringstream/
编辑1: 如果你关心小数点后的值,float可能是更好的类型。
对于除法,int可能无法产生你想要的结果。
基本上,这是一个我在作业中遇到困难的问题。问题是,创建一个程序,读取包含两个数字和一个运算符的字符串,并打印出结果。字符串由你的程序进行解释。
在这种情况下,你需要使用字符串流(stringstreams)。