鉴于:
typedef struct { char val[SOME_FIXED_SIZE]; } AString;
typedef struct { unsigned char val[SOME_FIXED_SIZE]; } BString;
我想添加<<
可用于AString
and的 ostream 运算符BString
。
std::ostream & operator<<(std::ostream &out, const AString &str)
{
out.write(str.val, SOME_FIXED_SIZE);
return out;
}
如果我对 做同样的事情BString
,编译器会抱怨invalid conversion from 'const unsigned char*' to 'const char*'
. ostream.write
没有const unsigned char*
as 参数。
它似乎<<
本身接受const unsigned char
,所以我尝试这样的事情
std::ostream & operator<<(std::ostream &out, const BString &str)
{
for (int i=0; i<SOME_FIXED_SIZE; i++)
{
out<<str.val[i];
}
return out;
}
有人可以告诉我这是正确/好的做法还是有更好的方法?欢迎任何意见!