字符串字面值的比较会导致未指定的行为- c++

Comparison in string literal results in inspecified behavior - C++

本文关键字:未指定 c++ 字面值 比较 字符串      更新时间:2023-10-16

我正在使用eclipse。我宣布了#define OUTPUT_FLAG "-o"然后是主链:int main(int argc, char **argv)之后我写:

    for (int i = 1; i < argc; i+=2)
    {
        if(argv[i]==INPUT_FLAG)
        {
            cout<<"input flagn";
            input_file=argv[i+1];
        }
    }

,在这里我得到了这个主题的错误。你能帮我一下吗?谢谢你

在c++中不能比较字符串和==。您必须使用strcmp或将它们转换为std::string s ,然后使用==操作符。即:

if (!strcmp(argv[i], INPUT_FLAG))

if (std::string(argv[i]) == INPUT_FLAG)

您不能使用==操作符比较C字符串(char *),因为该操作符仅检查指针是否相等(而不是对指针解引用并逐个比较每个字符)。使用strcmp(),或者先将argv[]中的字符串转换为c++ string类型