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()
做的事情不同。首先,它跳过零,然后生成一个反向的数字字符串。