比较两个不同类型的字符串

3
在C++程序中,我需要比较2个字符串是否相等:
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]) 也不行,等等。

提前感谢你的帮助。

2个回答

3
您可以尝试这个方法:
 artist1.to8Bit() != argv[2]

根据文档,函数to8Bit()应返回类型为std::string()的对象,其重载了接受const char*operator !=
只需确保在之前包含适当的头文件:
 #include <string> // <== YOU WILL NEED THIS TO WORK WITH std::string

1
根据您提供的参考链接,TagLib::String 仅为其他 TagLib::String 提供比较运算符。还提供了基于 C 风格字符串的构造函数:
TagLib::String (const char *s, Type t=Latin1)

你可以通过先从 char* 构造 TagLib::String 来将其与 C 风格的 char* 进行比较。
if(artist1 != TagLib::String(argv[2])) ...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接