检查参数是否为空或不相同

Moh*_*ril 4 c++ arguments if-statement

#include <iostream>

using namespace std;

int main(int argc,char* argv[]){
    if(argv[1] == ""){
        cout << "please put something" << endl;
    }else if(argv[1] == "string"){
        cout << "yeah string" << endl;
    }else if(argv[1] == "integer"){
        cout << "yeah integer" << endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

我不知false道出了什么问题:我试着检查为argv [1]提供的参数是否为空,所以它将会退出,所以请告诉我我的代码有什么问题.

log*_*og0 7

每个人都给你一个不同的答案.事实上每个人都是对的.

main的签名,int main(int argc, char *argv[])是继承自C.在C字符串中是指向char.==对它们使用运算符时,只比较指针值.

比较字符串内容的C方法是使用strcmp.

if (strcmp(argv[1], "integer") == 0){
Run Code Online (Sandbox Code Playgroud)

以C++方式执行它更安全,更容易.

if (std::string(argv[1]) == "integer"){
Run Code Online (Sandbox Code Playgroud)

这一行创建一个临时的std :: string argv[1].你必须包括string这个工作.

最后检查是否argc == 2为了知道是否提供了参数.确实,argv是由标准3.6.1终止的,但它确实使得检查argv确实等于2更清楚.