args 上的 If 语句给出奇数输出
If statement on args giving odd outputs
当 运行 此代码时:./a.out 5 + 5
我应该得到 10。但我却得到 Unkown operator.
有人知道为什么会这样吗?
#include <iostream>
#include <string>
int main(int argc, char *argv[]){
if (argv[2]=="+"){
std::cout << std::stoi(argv[1])+std::stoi(argv[3]) << "\n";
}
else if (argv[2]=="-"){
std::cout << std::stoi(argv[1])-std::stoi(argv[3]) << "\n";
}
else{
std::cout << "Unkown operator." << "\n";
}
return 0;
}
这一行比较指针值,而不是它们指向的字符串数据...
if (argv[2]=="+"){
要么使用 strcmp:
if (strcmp(argv[2], "+") == 0){
}
或者类似这样的东西:
if (std::string(argv[2]) == "+"){
}
当 运行 此代码时:./a.out 5 + 5
我应该得到 10。但我却得到 Unkown operator.
有人知道为什么会这样吗?
#include <iostream>
#include <string>
int main(int argc, char *argv[]){
if (argv[2]=="+"){
std::cout << std::stoi(argv[1])+std::stoi(argv[3]) << "\n";
}
else if (argv[2]=="-"){
std::cout << std::stoi(argv[1])-std::stoi(argv[3]) << "\n";
}
else{
std::cout << "Unkown operator." << "\n";
}
return 0;
}
这一行比较指针值,而不是它们指向的字符串数据...
if (argv[2]=="+"){
要么使用 strcmp:
if (strcmp(argv[2], "+") == 0){
}
或者类似这样的东西:
if (std::string(argv[2]) == "+"){
}