`
gstarwd
  • 浏览: 1487723 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

回复 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是碰上此类问题是如何表现?
  •  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics