译:
这是一个常见的问题,但是对于这个问题我没有找到一个很好的方法:如何将整数类型转化为字符串类型?我遇到过几种解决方案。我不会使用stringstream。sprintf()函数也遇到了问题,并且它是C语言的风格。函数itoa()以前工作地很好,但参考文档说:
这个函数在ANSI-C中没有被定义,并且它不是C++的一部分,但有些编译器支持
并且这个函数也是C语言风格。
我自己写了一个C++风格的函数,并且它工作起来没有错误(译者注:我不这么认为,详见后文)。
string convertInt(int number)
{
if (number == 0)
return "0";
string temp="";
string returnvalue="";
while (number>0)
{
temp+=number%10+48;
number/=10;
}
for (int i=0;i<temp.length();i++)
returnvalue+=temp[temp.length()-i-1];
return returnvalue;
}
不过,我认为有一个标准的函数(C++风格)可以使用。如果没有,谁能给一个关于stringstream如何工作的案例代码或者链接?
感激任何帮助!
——————————————————————————————————————————
译者注:
1. 对于C++我也遇到这个简单而没有很好的解决方法的问题,所以翻译此文,如果大家有好的方法,请赶快贴出来分享一下。
2.该作者写的函数只适用于非负int型整数,对于int型整数可以这么写:
string intToString(int number)
{
bool sign=true;
if (number == 0)
{
return "0";
}
else if (number<0)
{
sign=false;
number=-number;
}
string temp="";
string returnValue="";
while (number>0)
{
temp+=number%10+48;
number/=10;
}
for (int i=0;i<temp.length();i++)
returnValue+=temp[temp.length()-i-1];
return sign==true?returnValue:"-"+returnValue;
}
3.对于超过int范围的整数,比如12345678901,-12345678901,该函数就又不能使用了,这时候需要继续想办法解决。
欢迎各路高手给出你认为C++中最好的方法,当然也可以是你自己写的函数。