【问题标题】:Comparison in string literal results in inspecified behavior - C++字符串文字中的比较导致未指定的行为 - C++
【发布时间】:2011-11-12 13:06:21
【问题描述】:

我正在使用日食。 我宣布#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];
        }
    }

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

【问题讨论】:

    标签: c++ string arguments


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您不能在 C++ 中将字符串与 == 进行比较。您要么必须使用strcmp,要么将它们转换为std::strings 然后使用== 运算符。也就是说,要么:

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

      或

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-11
        • 1970-01-01
        • 2013-03-21
        • 1970-01-01
        相关资源
        最近更新 更多