使用pushback将整数放入字符串

时间:2015-04-17 04:41:20

标签: c++ string integer

我正在尝试使用以下代码将整数放入字符串:

int x = 42;
string num;
bool negative = false;

if(x < 0)
{
   negative = true;
   x = x * -1;
}
while(x > 0)
{
  num.push_back(x % 10);
  x = x / 10;
}

但是当我尝试输出字符串时,它会出现有线字符。你能帮忙解决一下这段代码中发生的事情吗?

编辑: PS。我想以亲切的手动方式做到这一点。意味着我不想使用to_string

3 个答案:

答案 0 :(得分:5)

会有奇怪的字符,因为当你push_back()时,整数被转换(或者说解释)为相应的ASCII字符,然后被推送回到字符串中。

前进的方法是通过在整数值中添加'0'将整数转换为字符。

while(x > 0)
{
  num.push_back((x % 10) + '0'); //Adding '0' converts the number into
                                 //its corresponding ASCII value.
  x = x / 10;
}

'0'添加到整数的原因是什么?

0的ASCII值是48,1是49,2是50等等...因此,我们在这里基本上做的是将48(ASCII值为0)添加到相应的整数以使其相等到它的ASCII等价物。顺便说一下,'0'等于48,因为 0 字符的ASCII值。

答案 1 :(得分:2)

std::to_stringstring::append

一起使用
while (x > 0)
{
    num.append(std::to_string(x % 10));
    x = x / 10;
}

使用push_back强迫您做更多工作。

答案 2 :(得分:1)

要转换您可以使用的整数:

  1. 字符操作:按'0'移动/添加ASCII表示,从而将int值转换为char值。
  2. 类型转换new_type(old_type),还有一些额外的types of casting
  3. 要扩展您可以使用的字符串的长度:

    1. 字符串member functions,例如:push_back(value)append(append)
    2. Concatenation operator喜欢:str += value;
    3. 可能的实施方式是:

      while(x > 0)
      {
       num+=((x % 10) + '0');                             
       x = x / 10;
      }