换句话说,在字符串比较中 C 和 C++ 有什么区别?
我来自'C'阵营。我看到程序使用 == 来比较字符串,我试图找到它的重载程序,但没有找到。这是否意味着 C++ 自然地使用 == 和 != 处理字符串 (char [])?
如果我有自己定义的 String 类,是否可以使用 == 和 != 而不定义它们?还是仅适用于 char []?
编辑:
看起来我将 C 的 char[] 与 C++ std::string 类混合在一起。好的,老问题仍然适用。一些后续问题如下:
我的程序定义了 char[] 变量,但与“==”运算符相比。这似乎工作。它们是 C 风格的字符串,但使用“==”。编译器是否为我自动将它们转换为 std::string 以便程序正常工作?
Edit2:
这是一个工作示例。
if(name == "") return;
其中“name”是 MyString 类项。它有一个带有参数 char* 的构造函数。
MyString 有一个公共函数 data(),它返回 char* C 风格的字符串指针。
那么,我是在比较 MyString 对象吗?还是 C 风格的字符串?
如果没有超载“!=”我自己,我可以做下面的事情吗?
if( name.data() != somes_[i].data() )
....