在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])
也不起作用等等。
提前致谢。
答案 0 :(得分:3)
你可以试试这个:
artist1.to8Bit() != argv[2]
根据文档,函数to8Bit()
应该返回std::string()
类型的对象,其中operator !=
的重载可以接受const char*
。
请确保在之前包含相应的标头:
#include <string> // <== YOU WILL NEED THIS TO WORK WITH std::string
答案 1 :(得分:1)
根据您提供的参考链接,TagLib::String
仅提供其他TagLib::String
的比较运算符。还提供了基于C风格字符串的构造函数:
TagLib::String (const char *s, Type t=Latin1)
您可以首先从TagLib::String
构建char*
来比较TagLib :: String和C风格的char *:
if(artist1 != TagLib::String(argv[2])) ...