常用数据类型转字符串

来源:互联网 发布:ai cs6软件下载 编辑:程序博客网 时间:2024/06/11 15:02
常用数据类型转字符串



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

二、我们最熟悉的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

━━━━━━━━━━━━━━━━━━━━━━━━

推荐:

谈老师的BLOG (佛教大德)
狮姐的博客(狮子窝,学佛与灵魂之探究)
大方广(学习传统文化)
慈善点击(轻松一点,行善积德,何乐不为)
电影《地球公民》(揭示不为人知的一面)  
心向光明 远离邪淫(现世警钟,不可不看)
戒淫(上篇)(正淫节欲,戒除邪淫)
戒淫(中篇)(纵欲之乐,忧患随之)
公民教育——命由我造

原创粉丝点击