像是C#,java等高级语言中,int转String类型都是很简单的,但是C++中好像很麻烦,我查了百度的资料,我找到了转换的方式:
我想问的是,为什么要这么做,而不提供直接转换的方式?
int 转换 string
string
int2str(
int
num)
{
if (num == 0 )
return " 0 " ;
string str = "" ;
int num_ = num > 0 ? num : - 1 * num;
while (num_)
{
str = ( char )(num_ % 10 + 48 ) + str;
num_ /= 10 ;
}
if (num < 0 )
str = " - " + str;
return str;
}
{
if (num == 0 )
return " 0 " ;
string str = "" ;
int num_ = num > 0 ? num : - 1 * num;
while (num_)
{
str = ( char )(num_ % 10 + 48 ) + str;
num_ /= 10 ;
}
if (num < 0 )
str = " - " + str;
return str;
}
string 转换 int
int
str2int(
string
str)
{
int i,len = str.size(),num = 0 ;
i = 0 ;
if (str[ 0 ] == ' - ' )
i = 1 ;
while (i < len)
{
num = num * 10 + ( int )(str[i] - ' 0 ' );
i ++ ;
}
if (str[ 0 ] == ' - ' )
num *= - 1 ;
return num;
}
{
int i,len = str.size(),num = 0 ;
i = 0 ;
if (str[ 0 ] == ' - ' )
i = 1 ;
while (i < len)
{
num = num * 10 + ( int )(str[i] - ' 0 ' );
i ++ ;
}
if (str[ 0 ] == ' - ' )
num *= - 1 ;
return num;
}
-
2009-07-19 20:01_itoa, _itow
Convert an integer to a string.
atof, atoi, _atoi64, atol
Convert strings to double (atof), integer (atoi, _atoi64), or long (atol).
这两个函数不能转换吗?这两个函数应该用得比较多吧。itoa和atoi。还有很多数据转换的函数,msdn中有说明的。
-
2009-07-19 20:16_itoa, _itowitoa好像不具有可移植性吧。。。。这个时候我一般用snprintf()
Convert an integer to a string.
atof, atoi, _atoi64, atol
Convert strings to double (atof), integer (atoi, _atoi64), or long (atol).
这
-
itoa好像不具有可移植性吧。。。。这个时候我一般用snprintf()目前对可移植性我倒是考虑得比较少,sprintf函数也可以的,而且连单片机c语言都支持这个函数,因为我第一次接触到sprintf是在写单片机程序的时候,所以现在学c++一般没意识到这个函数,哈 哈。。。。
-
不在乎效率的话可以用 stringstream
-
韩老师说得对,用stringstream自己稍做封装,就和C#或Java一样方便了。
如果还要懒,像我,就是直接用boost。
#include <boost/lexical_cast.hpp>
#include <string>
int main()
{
std::string str = "12345";
int i;
try
{
i = boost::lexical_cast<int>(str);
}
catch( const boost::bad_lexical_cast & )
{
//unable to convert
}
return 0;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
觉得有异常很麻烦?呵呵,那看看C#或Java是碰上此类问题是如何表现?