2013-05-18 2 views
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]) не работает, как хорошо, и т.д.

Спасибо заранее.

ответ

3

Вы можете попробовать это:

artist1.to8Bit() != argv[2] 

Согласно документации, функция to8Bit() должна возвращать объект типа std::string(), для которых перегрузка operator != приняв const char* доступно.

Просто убедитесь, что вы включили соответствующий заголовок перед:

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

Основываясь на опорном ссылке вы предоставили, TagLib::String предоставляет только операторы сравнения для других TagLib::String с. Конструктор на основе строк в стиле С обеспечивается также:

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

Вы можете сравнить TagLib :: String с полукокса C-стиле * при первом построении TagLib::String из char*:

if(artist1 != TagLib::String(argv[2])) ... 
Смежные вопросы