【发布时间】:2015-11-05 02:11:58
【问题描述】:
我必须处理可能未签名的char 数组(因为它们来自 SCSI 数据块)。我想用这个函数来处理它们:
template <typename CharT, size_t Len>
std::string strFromArray(CharT (&src) [Len])
{
return std::string((typename boost::make_signed<CharT>::type *) src, Len);
}
错误在std::string构造函数调用中,它不能接受signed char/unsigned char,而只会接受char。
我当然可以用(char *) src 替换强制转换,但是如果我传入非字符类型,我会丢失所有编译器错误。
我怎样才能写出它来构造所有“charry”类型的字符串?
【问题讨论】:
-
传入非char类型真的很重要吗?
-
@M.M 我必须处理很多
wchar_t字符串,所以如果我误用它,我宁愿收到警告。 -
既然您使用的是模板,为什么不使用 SFINAE?