字符串文字中的比较导致未指定的行为 - C ++

时间:2011-09-07 21:51:44

标签: c++ string arguments

我正在使用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 flag\n";
            input_file=argv[i+1];
        }
    }

在那里我得到了关于这个主题的错误。你能帮帮我吗? 谢谢

2 个答案:

答案 0 :(得分:2)

您无法在C ++中将字符串与==进行比较。您必须使用strcmp或将其转换为std::string s ,然后才能使用==运算符。也就是说:

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

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

答案 1 :(得分:1)

您无法使用char *运算符比较C字符串(==),因为该运算符仅检查指针相等性(而不是取消引用指针并逐个比较每个字符)。使用strcmp(),或先将argv[]中的字符串转换为C ++ string类型。