C++ 使用pushback将整数放入字符串中

C++ 使用pushback将整数放入字符串中,c++,string,integer,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; } intx=42; 字符串数; 布尔阴性=假; if(x0) { 回推次数(x%10); x=x/10; } 但是当我试图输出字符串时,它会

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

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;
}
intx=42;
字符串数;
布尔阴性=假;
if(x<0)
{
负=真;
x=x*-1;
}
而(x>0)
{
回推次数(x%10);
x=x/10;
}
但是当我试图输出字符串时,它会出现有线字符。你能帮我看看这段代码里发生了什么吗

编辑:
另外,我想用手工的方式做这件事。表示我不想使用to_string

使用
std::to_string
string::append

while (x > 0)
{
    num.append(std::to_string(x % 10));
    x = x / 10;
}
使用
push_back
会迫使您做更多的工作。

会有奇怪的字符,因为当您
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'
添加到整数的原因?
ASCII值0是48,1是49,2是50,依此类推。。。因此,我们在这里主要做的是将48(ASCII值0)添加到相应的整数,使其等于其ASCII等效值。顺便说一下,
'0'
等于48,因为它是
0
字符的ASCII值。

要转换整数,可以使用:

  • 字符操作:通过
    '0'
    移动/添加表示,从而将
    int
    值转换为
    char
  • 类型转换
    新类型(旧类型)
    ,还有一些附加功能
  • 要扩展字符串的长度,可以使用:

  • 类似以下字符串:
    push_-back(value)
    append(append)
  • 比如:
    str+=value
    一种可能的实施方式是:

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

    嗨,谢谢你!这是工作!你能解释一下“0”的用法吗?或任何参考资料?再次感谢~!我宁愿说整数没有被转换,但它只是被不同的解释。为了正确转换,我将使用
    “0123456789”[x%10]
    。使用
    '0'
    作为基是有效的,因为在几乎每个字符集中,它后面都跟有其他数字。@UlrichEckhardt。我只是给了OP一个最简单的方法来完成这个任务,而不需要修改他的大部分代码。@user4799188编辑了答案。这不会颠倒数字吗?e、 g.13--->3和1所以31。注意:您的代码不会为
    x==0
    做任何事情。是的,您做了,这个循环与
    to_string()
    做的事情不同。首先,它跳过零,然后生成一个反向的数字字符串。