比较两个字符串(但不同类型的)
Compare two strings (but different types of)
在c++程序中,我需要比较两个字符串是否相等:
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])
不工作,等等
你可以试试:
artist1.to8Bit() != argv[2]
根据文档,函数to8Bit()
应该返回一个类型为std::string()
的对象,对于operator !=
的一个接受const char*
的重载是可用的。
只是要确保在
#include <string> // <== YOU WILL NEED THIS TO WORK WITH std::string
根据您提供的参考链接,TagLib::String
只提供了其他TagLib::String
的比较运算符。还提供了一个基于c风格字符串的构造函数:
TagLib::String (const char *s, Type t=Latin1)
您可以通过首先从char*
:
TagLib::String
来比较TagLib::String与c风格的char*。if(artist1 != TagLib::String(argv[2])) ...
相关文章:
- 我有两个类需要在同一 cpp 文件中相互引用,但第一个类无法识别第二个类类型的对象
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 可以将两个相同类型的连续数组视为一个数组吗?
- 如何允许模板参数中的类类型,仅当它有两个基类时
- 测试两个类型列表中的所有组合
- 在类 A 中创建类型为 B 类的向量 - 访问数据 [C++] [成员在两个类中都是私有的]
- 堆栈分配的类类型.为什么两个 ID 实例的地址相同?
- 为什么在传递长整型时调用具有两个双精度类型的参数的重载函数?
- 如何创建两个具有相同名称和不同返回类型并基于布尔参数运行的函数
- 为什么 Clang 和 GCC 中两个无符号整数之和的结果类型不同
- 比较两个整数在C++中与未知 int 类型的相等性
- 为什么C++不允许两个同名的函数/类模板,区别仅在于非类型模板参数(整型)的类型?
- [[no_unique_address]] 和两个相同类型的成员值
- 同一类的两个对象相互引用
- C++stoi:这两个重载都无法转换所有参数类型
- 当两个成员位于同一类中时出错"a nonstatic member reference must be relative to a specific object"
- 类型测试对象的动态数组的这两个声明之间的区别?
- 为什么我不能在同一行中定义两个相同类型的类的成员指针
- 重写虚函数协变返回类型(两个指针)
- 在c++中,如何在另一个嵌套类中使用嵌套类类型(两个嵌套类在同一个外部类下)