我正在尝试将一个数字存储为名为code
的char矢量中的字符code->at(i) = static_cast<char>(distribution(generator));
然而,它并没有以我认为的方式存储
有些人不应该'\ x4'是4的ascii值吗?如果不是我如何实现这一结果?
这是另一个正确输入值的向量。
答案 0 :(得分:3)
您正在投射而不实际将int转换为char。你需要:
code->at(i) = distribution(generator) + '0';
答案 1 :(得分:3)
没有。 \xN
没有为您提供字符N
的ASCII代码。
\xN
是 ASCII字符†,其代码为N
(以 x 十进制形式)。
因此,当您编写'\x4'
时,您将获得带有ASCII码4的[unprintable]字符。转换为整数后,此值仍为4.
如果您希望ASCII字符看起来像4
,则您需要写'\x34'
,因为34是4
的ASCII码。你也可以使用一些魔术来实现,基于ASCII中的数字是连续的并且从'0'
开始:
code->at(i) = '0' + distribution(generator);
† Ish。