MFC 中的一些CString ,string,char間的轉換

來源:互聯網
上載者:User

文章轉自:http://hi.baidu.com/lqx0830/item/cc570c456a62c72f10ee1e85

1.  string 轉 CString :CString.format("%s", string.c_str()); //CString為目標字串,string為源字串

     //用c_str()確實比data()要好.

2. char 轉 string :string s(char *); //只能初始化,在不是初始化的地方最好還是用assign().

3. string 轉 char * :char *p = string.c_str();

4. CString轉std::string :CString str = dlg.GetPathName();

                                        setlocale(LC_ALL, "chs");

                                       
char *p = new char[256];

                                       
wcstombs( p, str, 256 );

                                       
m_fileName = p;

5. CString -> string :string s(CString.GetBuffer());

   // GetBuffer()後一定要ReleaseBuffer(),否則就沒有釋放緩衝區所佔的空間.

 

6. 《C++標準函數庫》中說的

    有三個函數可以將字串的內容轉換為字元數組和CString

       
1).data(),返回沒有”\0“的字串數組

       
2)c_str(),返回有”\0“的字串數組

       
3)copy()

7. CString互轉int :將字元轉換為整數,可以使用atoi、_atoi64或atol。

8. 數字轉換為CString變數,可以使用CString的Format函數。如

    CString s;

    int i = 64;

    s.Format("%d", i)

9. Format舉例:

    void CStrDlg::OnButton1()

    {

        CString ss="1212.12";

        int temp=atoi(ss);

        CString aa;

        aa.Format("%d",temp);

        AfxMessageBox("var is " + aa);

    }

 

    sart.Format("%s",buf);

 

10. char * TO cstring

        CString strtest;

        char * charpoint;

        charpoint="give string a value";

        strtest=charpoint;

 

 

11. cstring TO char *

        charpoint=strtest.GetBuffer(strtest.GetLength());

 

        標準C裡沒有string,char *==char []==string

        可以用CString.Format("%s",char *)這個方法來將char *轉成CString。要把CString轉成char *,用操作符(LPCSTR)CString就可以了。

 

12. CString轉換 char[100]

        char a[100];

        CString str("aaaaaa");

        strncpy(a,(LPCTSTR)str,sizeof(a));

13. CString類型的轉換成int :可以使用atoi、_atoi64或atol。

        //CString aaa = "16" ;

        //int int_chage = atoi((lpcstr)aaa) ;

14. 將數字轉換為CString變數,可以使用CString的Format函數。如

        CString s;

        int i = 64;

        s.Format("%d", i)

 

        如果是使用char數組,也可以使用sprintf函數。

 

        數字->字串除了用CString::Format,還有FormatV、sprintf和不需要藉助於Afx的itoa

 

15. char* 轉int

        #include <stdlib.h>

        int atoi(const char *nptr);

        long atol(const char *nptr);

        long long atoll(const char *nptr);

        long long atoq(const char *nptr);

 

16. CString,int,string,char*之間的轉換

        string aa("aaa");

        char *c=aa.c_str();

 

        cannot convert from 'const char *' to 'char *'

        const char *c=aa.c_str();

 

16. CString,int,string,char*之間的轉換

        string.c_str()只能轉換成const char *,

        要轉成char *這樣寫:

        string mngName;

        char t[200]; memset(t,0,200); strcpy(t,mngName.c_str())

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.