首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将任何有符号字符类型转换为无符号字符类型

将任何有符号字符类型转换为无符号字符类型
EN

Stack Overflow用户
提问于 2014-05-05 08:51:25
回答 1查看 123关注 0票数 0
代码语言:javascript
复制
template< typename charT >
struct serializer
{
    /* ... */
private:
    std::basic_string< charT > base64_encode( unsigned charT * bytes, unsigned length );
};

我希望私人成员函数采用无符号的任何类型。如果charT是char16_t,char32_t,wchar_t,我希望签名没有签名。我怎么能这么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-05 08:55:57

最简单的方法是使用std::make_unsigned,它适用于任何整数类型:

代码语言:javascript
复制
template<typename T>
typename std::make_unsigned<T>::type convert(T const& input)
{
    return static_cast<typename std::make_unsigned<T>::type>(input);
}

在您的类中直接使用它会变得非常糟糕,因此我们将添加一个类型别名:

代码语言:javascript
复制
template< typename charT >
struct serializer
{
    typedef typename ::std::make_unsigned<charT>::type ucharT;
    /* ... */
private:
    std::basic_string< ucharT > base64_encode( ucharT * bytes, unsigned length );
};
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23468474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档