【问题标题】:Unsigned string construction impossible无符号字符串构造不可能
【发布时间】:2017-04-06 18:57:59
【问题描述】:

我正在寻找一种方法来获取一串无符号字符。 所以我偶然发现了这个Strings of unsigned chars

所以答案是创建一个新的 typedef 如下:

typedef std::basic_string<unsigned char> ustring;

问题是,我无法用这个来构建。当我尝试时:

char *p = "123123";
auto s = ustring(p);

我收到以下错误:

no instance of constructor "std::basic_string<_Elem, _Traits, 
_Alloc>::basic_string [with _Elem=unsigned char, 
_Traits=std::char_traits<unsigned char>, _Alloc=std::allocator<unsigned 
char>]" matches the argument list

有人可以解释一下这个问题吗?

提前致谢!

【问题讨论】:

  • 如果您放弃 C 标记并将图像替换为内联文本,这将是一个很好的问题。
  • 谢谢,这是一个很好的问题。投赞成票。

标签: c++ string char


【解决方案1】:

无论您的平台上的charsigned 还是unsignedcharunsigned charsigned char 都是所有不同的类型。就像 intlong 是不同的类型,即使它们具有相同的位数和补码方案。

所以你会有更好的运气

const unsigned char* p = (const unsigned char*)"123123";

我在其中插入了const 限定以强调const char[7] 文字的只读性质。

【讨论】:

  • 傻我!谢谢!我想我需要对 p 进行强制转换: unsigned char* p = (unsigned char*)"123123";
  • 糟糕。是的,你确实会。我们将共同发布!
猜你喜欢
  • 1970-01-01
  • 2020-07-26
  • 2023-03-05
  • 2013-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多