【问题标题】:Compare two strings (but different types of)比较两个字符串(但不同类型)
【发布时间】:2013-05-13 13:23:54
【问题描述】:

在 C++ 程序中,我需要比较两个字符串是否相等:

TagLib::String artist1 = f.tag()->artist();

(见http://taglib.github.io/api/classTagLib_1_1String.html

argv[2]

(来自int main(int argc, char *argv[]))。

我尝试了很多方法来做到这一点,但我没有成功: artist1 != argv[2] 不起作用,strcmp(artist1,argv[2]) 也不起作用,等等。

提前致谢。

【问题讨论】:

    标签: c++ string command-line-arguments string-comparison


    【解决方案1】:

    你可以试试这个:

     artist1.to8Bit() != argv[2]
    

    根据文档,函数to8Bit() 应该返回一个std::string() 类型的对象,对于该对象,可以使用接受const char*operator != 的重载。

    只需确保在之前包含适当的标题:

     #include <string> // <== YOU WILL NEED THIS TO WORK WITH std::string
    

    【讨论】:

      【解决方案2】:

      根据您提供的参考链接,TagLib::String 仅提供其他TagLib::Strings 的比较运算符。还提供了一个基于 C 风格字符串的构造函数:

      TagLib::String (const char *s, Type t=Latin1)
      

      您可以通过首先从 char* 构造 TagLib::String 来比较 TagLib::String 和 C 风格的 char*:

      if(artist1 != TagLib::String(argv[2])) ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-04
        • 2012-10-23
        相关资源
        最近更新 更多