我尝试在我自己的String
类中重载关系运算符。这个类看起来如何:我将字符串存储在data
里面,这是一个数组。
class MyString
{
public:
//default constructor, create an empty string
MyString()
{
};
//create a string containing n copies of c
MyString(size_t n, char c) :data(new char[n]), data_length(n)
{
for (size_t i = 0; i < n; i++)
{
data[i] = c;
}
};
//create a string from a null-terminated array
MyString(const char *cp):data(new char[std::strlen(cp)]), data_length(std::strlen(cp))
{
//std::copy(cp, cp + std::strlen(cp), data);
std::copy(cp, cp + std::strlen(cp), stdext::checked_array_iterator<char*>(data, data_length));
}
//destructor
~MyString()
{
//free the array
delete[] data;
};
//relational operators
bool operator==(const char* lhs, const char* rhs)
{
}
private:
size_t data_length;
char* data;
};
编译器说不能超过2个args,所以我理解lhs
必须隐含在这样:
bool operator==(const char* rhs)
{
}
但是,我的问题是: 假设我比较了两个位于以null结尾的数组内的字符串,我怎样才能在循环中比较它们?