【问题标题】:Casting an int to a char. Not storing the correct value将 int 转换为 char。未存储正确的值
【发布时间】:2014-09-20 12:46:30
【问题描述】:

我正在尝试将数字作为字符存储在名为 code 的 char 向量中

code->at(i) = static_cast<char>(distribution(generator));

但是它并没有按照我认为应该的方式存储

对于某些人来说,'\x4' 不应该是 4 的 ascii 值吗?如果不是,我该如何实现?

这是另一个输入正确值的向量。

【问题讨论】:

标签: c++ casting char int


【解决方案1】:

您在没有实际将 int 转换为 char 的情况下进行转换。你需要:

code->at(i) = distribution(generator) + '0';

【讨论】:

  • 谢谢,这很好。以为我忘记了什么
  • 另外,为什么不首先简单地设置一个uniform_int_distribution&lt;char&gt; 以简单地在'0''9' 范围内。如果这样做的目的是生成数字字符'0''9'
【解决方案2】:

没有。 \xN 不会为您提供字符 N 的 ASCII 码。

\xN ASCII 字符,其代码为N(以他的x十进制形式)。

所以,当你写'\x4' 时,你会得到 ASCII 码为 4 的 [unprintable] 字符。转换为整数后,这个值仍然是 4。

如果您想要看起来像 4 的 ASCII 字符,您可以写成 '\x34',因为 34 是 4 的 ASCII 码。你也可以使用一些魔法到达那里,基于 ASCII 中的数字是连续的并且从 '0' 开始:

code->at(i) = '0' + distribution(generator);

Ish.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 2012-08-07
    相关资源
    最近更新 更多