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 のオブジェクトを返す必要があり、 a を受け入れるstd::string()オーバーロードが利用可能です。operator !=const char*

次の前に適切なヘッダーを含めるようにしてください。

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

あなたが提供した参照リンクに基づいて、TagLib::String他の s の比較演算子のみを提供しますTagLib::String。C スタイルの文字列に基づくコンストラクターも提供されます。

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

TagLib::String を C スタイルの char* と比較するには、最初に から を作成TagLib::Stringchar*ます。

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