常用数据类型转字符串

常用数据类型转字符串



一、刚开始学习编程时常常为其他数据类型转字符串而烦恼。不难,就是繁琐。
    现在总结了些小技巧,和大家分享,希望对大家有所帮助。

二、我们最熟悉的springf,功能强大,但不够安全,而且也很繁琐(哈哈!也许很多高手会反驳)

三、itoa函数,不错的选择,我以前用得最多啦!但能否再简单点呢?这个的可读性不好。
   

TCHAR buf[11];
_itot(num,buf,10);  // #include  <TCHAR.H>


四、更好的选择:

    /****************************************************************************
    1.函数 string ItoString(int val) + 宏定义 INT_TO_STR(X) 实现int值简单的转TCHAR*
    2.需要 #include <string>
    3.调用示例:
    int a=45;
    ::MessageBox(m_hWnd,INT_TO_STR(a),NULL,MB_OK);
    ****************************************************************************/
    //兼容ANSI和UNICODE
    #ifdef    _UNICODE   
    #define __string        wstring   
    #else   
    #define __string        string
    #endif   
    std::__string _Int_to_String(int val)
    {
        TCHAR buffer[11];
        _itot(val,buffer,10);
        return std::__string(buffer);
    }
    #define INT_TO_STR(X) _Int_to_String(X).c_str()


     

五、更通用的方法。
 

    /****************************************************************************
    1.常用数据类型转换成字符串
    2.使用了一个模版函数和宏定义ALL_TO_STR
    3.依靠ostringstream的数据转换功能。
    4.需包含头文件 #include <string> 和 #include <sstream>
    5.调用示例:
        TCHAR buf[100]=_T("Impossible is nothing");
        TCHAR buf2[100]=_T("this is multi line/r/nfirst line/r/nsecond line");
        int a=45; double b=67.45; double c=847.424;short d=324; bool e=true;

        ::MessageBox(m_hWnd,ALL_TO_STR(buf),NULL,MB_OK);
        ::MessageBox(m_hWnd,ALL_TO_STR(a),NULL,MB_OK);
        ::MessageBox(m_hWnd,ALL_TO_STR(b),NULL,MB_OK);
        ::MessageBox(m_hWnd,ALL_TO_STR(c),NULL,MB_OK);
        ::MessageBox(m_hWnd,ALL_TO_STR(d),NULL,MB_OK);
        ::MessageBox(m_hWnd,ALL_TO_STR(e),NULL,MB_OK);
    ****************************************************************************/
    //兼容ANSI和UNICODE
    #ifdef    _UNICODE   
    #define __string        wstring   
    #define __ostringstream wostringstream
    #else   
    #define __string        string
    #define __ostringstream ostringstream
    #endif   

    template <class T> std::__string __OutputString(T val)
    {
        std::__ostringstream FormatString;
        FormatString<<val;
        return std::__string(FormatString.str());
    }

    #define ALL_TO_STR(X) __OutputString(X).c_str()


  
以上方法在我的另外两篇文章中都有使用到
http://blog.csdn.net/jacky_qiu/archive/2010/11/04/5986089.aspx
http://blog.csdn.net/jacky_qiu/archive/2010/12/02/6051517.aspx

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值