我有自定义字符串类:
#include <string.h>
class String
{
char * str;
int n;
public:
explicit String(const char* s)
{
n = strlen(s);
str = new char[n + 1];
strcpy(str, s);
printf("Class constructor\n");
}
~String() { delete[] str; printf("Class destructor\n"); };
const char& operator [] (int i) const
{
return (i >= 0 && i < n) ? this->str[i] : 0;
}
}
我已经实现了返回const char
的索引操作符,但是我希望有一个索引操作符,它返回对string元素的引用。我知道它可以使用friend
来完成,但我的尝试是写它不成功。
你能就我的问题如何解决提出一些建议吗?
答案 0 :(得分:1)
看看http://en.cppreference.com/w/cpp/string/basic_string_view。您可以使用它,也可以为自己定义类似于std :: string和String类的模拟。
然后你会
string_view operator[] (size_t i) const
{
if(i >= n) { return string_view(nullptr, 0); }
return string_view(str[i], n - i);
}
请注意,您不想要使用您的String
类,因为它拥有并复制数据。相反,你想要一个没有所有权但类似方法的类。