我知道它用于获取包含c字符串,类似于std::string.c_str().
但是我该如何使用运算符?
//android/frameworks/base/include/utils/String8.h
458 inline String8::operator const char*() const
459 {
460 return mString;
461 }
答案 0 :(得分:6)
这是一个user-defined conversion,它允许您从用户定义的类型转换为另一种类型。
您可以使用它从const char*
对象获取String8
来执行此类操作。
String8 str = "Hello";
const char *cptr = str; // gets const char* from str
std::strlen(str); // std::strlen expects a const char*
答案 1 :(得分:2)
与其如何使用它(明确地)不同,因为它是隐式使用它。如果您对.c_str()
使用std::string
,请离开.c_str()
。当然问题是歧义:std::string
缺乏这样的运算符,并且您可能偶尔会发现自己必须显式调用运算符,以便编译器知道要使用哪种行为。
编辑:响应UncleBens评论的例子:
#include <iostream>
struct X
{
operator const char*() { return "hello world\n"; }
};
int main()
{
X x;
std::cout << x.operator const char*();
}