比较两个字符串(但不同类型)

时间:2013-05-18 13:41:31

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

在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 个答案:

答案 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])) ...