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])不起作用,等等。

提前致谢。

4

2 回答 2

3

你可以试试这个:

 artist1.to8Bit() != argv[2]

根据文档, functionto8Bit()应该返回一个 type 的对象,可以接受 astd::string()的重载。operator !=const char*

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

 #include <string> // <== YOU WILL NEED THIS TO WORK WITH std::string
于 2013-05-18T13:42:51.733 回答
1

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

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

TagLib::String您可以通过首先从以下构造 a 来将 TagLib::String 与 C 风格的 char* 进行比较char*

if(artist1 != TagLib::String(argv[2])) ...
于 2013-05-18T13:45:32.300 回答