回复 C++中如何将Int类型转换为String类型?

像是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;
}

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;
}

 

 

 

  • 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, _itow
    Convert an integer to a string.

    atof, atoi, _atoi64, atol
    Convert strings to double (atof), integer (atoi, _atoi64), or long (atol).

    itoa好像不具有可移植性吧。。。。这个时候我一般用snprintf()
  •  itoa好像不具有可移植性吧。。。。这个时候我一般用snprintf()
    目前对可移植性我倒是考虑得比较少,sprintf函数也可以的,而且连单片机c语言都支持这个函数,因为我第一次接触到sprintf是在写单片机程序的时候,所以现在学c++一般没意识到这个函数,哈 哈。。。。
  • 韩老师说得对,用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是碰上此类问题是如何表现?
  •  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值