【问题标题】:Why was the C++ string converted to int?为什么将 C++ 字符串转换为 int?
【发布时间】:2015-09-27 13:48:23
【问题描述】:

在下面的代码中,我无法理解为什么string会以这种方式转换为int

为什么要使用 0 的总和?

string mystring; 
vector<int> myint; 
mystring[i+1]=myint[i]+'0';

【问题讨论】:

  • 你不会理解它,因为这段代码不会将字符串转换为 int。
  • 或者它可以这样做?我要MCVE
  • 这里是不是缺少某种循环。 i+1 确实表明了这一点。提供这段代码 sn-p 的上下文可能会给我们一些额外的信息,让我们也可以解释为什么要完成这一切。
  • 我觉得这不是string->int转换,而是int->string转换。
  • 看起来您在 ASCII 表字符和整数变量、转换等方面需要一些帮助。

标签: c++ string int


【解决方案1】:

此代码将 int(可能是数字)转换为表示它的字符。

由于字符是连续的,并且chars 可以被视为整数,所以表示某个数字的字符实际上可以通过它与'0' 的距离来描述。这样,0 转为字符'0''5' 是大于'0' 5 的字符,以此类推。

【讨论】:

  • 因为字符是连续的... 在ASCII中
【解决方案2】:

这是获取单个数字的 char 表示的一种有效、老式且危险的方法。 '0' 将被转换为包含其 ASCII 码(0x30 表示“0”)的int,然后将其添加到myint[i]。如果myint[i]9 或更低,您可以将myint[i] 转换为字符,您将得到结果数字作为文本。

如果您向'0' 添加超过9,事情将不会按预期进行

你也可以从它的字符表示中得到一个数字:

char text = '5';
int digit = text - '0';

【讨论】:

    【解决方案3】:

    '0' 表达式不是字符串类型,它是存储 ASCII 字符的 char 类型,也可以表示 0 到 255 之间的数字。因此,在算术运算中,char 的行为类似于整数类型。

    在 C 字符串中,a 表示为 char 数组:静态 (char str[N]) 或动态 (char *str = new char[n])。字符串文字放在双引号中 ("string")。 所以,'0' 是 char,"0" 是 char[1]

    【讨论】:

      猜你喜欢
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-07
      • 1970-01-01
      相关资源
      最近更新 更多