{
cout << "type 3 to add ,type 1 to multiply,type division to divide,type 2 to subtract" << endl;
cin >> function;
if (function == 1)
{
multiply();
}
else if (function == 2)
{
subtract();
}
else if (function == 3)
{
add();
}
else if (function == 4)
{
division();
}
cout << "press x to quit or anything else to restart " << endl;
cin >> input;
} while (input !='x');
system("pause");
return 0;
}
在此代码中,我无法使用if获得字符值
例如 - 如果(function=='add')
它不起作用
如果我使用if(function='add')
,内部的所有内容都会被跳到最后一个cout
,其中包含
按x退出或其他任何内容重新启动
答案 0 :(得分:3)
'add'
是多字符文字,是int
类型(请注意单引号字符)。你几乎肯定不想这样做,因为那时你处于实现定义的行为的阴暗水域。
如果您希望能够阅读字符串,那么为什么不使用std::string
作为function
的类型,并使用if (function == "add")
&amp; c。 ?你甚至可以保留你的符号cin >> function
!
答案 1 :(得分:0)
正如Bathsheba所建议的那样,您可以使用std :: string实现此功能。你有一个如何做到这一点的例子。
#include <iostream>
#include <string>
void multiply() {
std::cout << "multiplication called" << std::endl;
}
void add() {
std::cout << "add called" << std::endl;
}
void subtract() {
std::cout << "substract called" << std::endl;
}
void division() {
std::cout << "division called" << std::endl;
}
int main()
{
using namespace std;
string input;
do {
cout << "type add, multiply, division, or subtract" << endl;
cin >> input;
if (input == "multiply") {
multiply();
}
else if (input == "substract") {
subtract();
}
else if (input == "add") {
add();
}
else if (input == "division") {
division();
}
else {
cout << "You inputed: " << input << endl;
cout << "Command not recognized, please try again" << endl;
continue;
}
cout << "press x to quit or anything else to restart ";
cin >> input;
} while (input != "x");
return 0;
}