转换:       

1、string 转 CString

       CString.format("%s", string.c_str());

2、char * 转 CString

      CString.format("%s", char*);

3、char * 转 string

    string s(char *);

4、string 转 char *

     char *p = string.c_str();

5、CString 转 string

      string s(CString.GetBuffer(CString.GetLength()));

6、CString 转 char *

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

      不建议用(LPCTSTR)进行强制类型转化,这样strtest大小发生变化时会出现错误。

7、CString 转 char[100]

      char a[100];

      CString str("aaaaaa");

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

注意

1、string -> CString

      CString.format("%s", string.c_str());

      用c_str()确实比data()要好.

2、CString -> string

      string s(CString.GetBuffer());

      GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.

3、有三个函数可以将字符串的内容转换为字符数组和CSstring

    (1)data(),返回没有”\0“的字符串数组

    (2)c_str(),返回有”\0“的字符串数组

    (3)copy()

4、将字符转换为整数,可以使用atoi、_atoi64或atol。

5、将数字转换为CString变量,可以使用CString的Format函数

CString s;
      int i = 64;
      s.Format("%d", i)

      Format函数的功能很强,值得你研究一下。

性能比较

1、安全性>

CString > string > char*;

2、灵活性

CString > string >char*;

3、可移植性

char* = string > CString


 

 

 

 

一、类声明头文件:  

CString 头文件#include <afx.h> 

string 头文件#include <string.h>  

二、char型、string型、CString型之间的相互转换:  

①、CString 转char *  CString cstr;  char *p = (LPSTR)(LPCTSTR)cstr;   

②、string 转 CString  CString.format(”%s”, string.c_str());   

③、char 转 CString  CString.format(”%s”, char*);   

④、char 转 string  string s(char *);   

⑤、string 转 char   char *p = string.c_str();  

三、string型、CString型、char型之间的相互转换:  

string s(CString.GetBuffer());  

①string -> CString  CString.format(”%s”, string.c_str()); 用c_str()确实比data()要好.   ②char -> string  string s(char *);  只能初始化,在不是初始化的地方最好还是用assign().   

③CString -> string  string s(CString.GetBuffer());  

GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.


sprintf完成转换

char buffer[200];
 char c = '1';
 int   i = 35;
 long j = 1000;
 float f = 1.7320534f;
 sprintf( buffer, "%c",c);
 sprintf( buffer, "%d",i);
 sprintf( buffer, "%d",j);
 sprintf( buffer, "%f",f);

二、字符串string转换为其它数据类型temp="123456";
1)短整型(int)
i = atoi(temp);
2)长整型(long)
l = atol(temp);
3)浮点(double)
d = atof(temp);
string s; d= atof(s.c_str());
4)BSTR变量

BSTR bstrValue = ::SysAllocString(L"程序员");
 ...///完成对bstrValue的使用
 SysFreeString(bstrValue);


5)CComBSTR变量

CComBSTR类型变量可以直接赋值
 CComBSTR bstrVar1("test");
 CComBSTR bstrVar2(temp);


6)_bstr_t变量

_bstr_t类型的变量可以直接赋值
 _bstr_t bstrVar1("test");
 _bstr_t bstrVar2(temp);

string转char*

string 是c++标准库里面其中一个,封装了对字符串的操作
把string转换为char* 有3中方法:
1。data
如:
string str="abc";
char *p=str.data();
2.c_str
如:string str="gdfd";
    char *p=str.c_str();
3 copy
比如

string str="hello";
char p[40];
 str.copy(p,5,0); //这里5,代表复制几个字符,0代表复制的位置
*(p+5)='\0'; //要手动加上结束符
cout < <p;


string

string 是 C++ 提供的字串型態,和 C 的字串相比,除了有不限长度的优点外,还有其他许多方便的功能。要使用 string, 必須先加入这一行:

#include <string>

接下來要宣告一个字串变量,可以写成:

string s;

我们也可以在宣告的同时让它设成某个字串:

string s="TCGS";

而要取得其中某一個字元,和传统C 的字串一樣是用 s[i] 的方式取得。比较不一樣的是如果 s 有三個字元,傳統 C 的字串的 s[3] 是 0 字元,但是 C++ 的 string 則是只到 s[2] 这個字元而已。

下面我们把 string 與 字元陣列的語法做一個對照:

操作string字元陣列 宣告字串 string s; char s[100]; 取得第 i 個字元 s[i] s[i] 字串長度 s.length()
或 s.size() strlen(s) 读取一行 getline(cin, s); gets(s); 设成某字串 s="TCGS"; strcpy(s, "TCGS"); 字串相加 s=s+"TCGS";
s+="TCGS" strcat(s, "TCGS"); 字串比较 s=="TCGS" strcmp(s, "TCGS")

从上面的表格,我們可以发现 string 的用法比较直观,因此如果沒有特別的需要,尽量使用 string 會比較方便。

 

int 转换为Srting、String转为int

方法一:

itoa是广泛应用的非标准C语言扩展函数。由于它不是标准C语言函数,所以不能在所有的编译器中使用。但是,大多数的编译器(如Windows上的)通常在<stdlib.h>头文件中包含这个函数。

功能:将任意类型的数字转换为字符串。在<stdlib.h>中与之有相反功能的函数是atoi。

 

char*itoa(intvalue,char*string,intradix);


 


int value 被转换的 整数 ,char *string 转换后储存的 字符 数组 ,int radix 转换进制数,如2,8,10,16 进制


头文件: <stdlib.h>程序例:

1. <span style="font-size:18px;">#include <iostream>  
2. #include <stdlib.h>  
3. using namespace std;  
4.   
5. void main()  
6. {  
7. int n=1234;  
8. char str[25];  
9.     itoa(n,str,10);  
10. " ";  
11. int m=atoi(str);  
12.     cout<<m;  
13. }  
14. </span>

方法二

stringstream 是 C++ 提供的另一个字串型的串流(stream)物件,和之前学过的 iostream、fstream 有类似的操作方式。要使用 stringstream, 必須先加入這一行:


<span style="font-size:18px;">#include <sstream></span>



stringstream 主要是用在將一個字串分割,可以先用 clear( )以及 str( ) 將指定字串設定成一开始的內容,例如:


<p> </p><p>#include <iostream>
#include <stdlib.h>
#include <string>
#include <sstream>
using namespace std;</p><p>void main()
{
 string s;
 stringstream ss(s),stream;
 ss.clear();
 int a=0, b=10, c=6;
 ss<< a << b <<c;
 s=ss.str();//int 转换为String
 cout<<s<<" ";
 int n=0;
 stream<<s;
 stream>>n;//String 转换为int
 cout<<n;
}</p><p><span style="font-size:18px;">下面我們看到一個使用 <span style="color:#00cc;">stringstream</span> 的例子:</span></p>


題目:输入的第一行有一个数字 N 代表接下來有 N 行資料,每一行資料里有不固定個數的整數(最多 20 個,每行最大 200 個字元),請你寫一個程式將每行的总和印出來。

輸入:

3
 1 2 3
 20 17 23 54 77 60
 111 222 333 444 555 666 777 888 999

輸出:

6
 251
 4995

程序如下:


1. #include <iostream>  
2. #include <stdlib.h>  
3. #include <string>  
4. #include <sstream>  
5. using namespace std;  
6.   
7. void main()  
8. {  
9.     string s;  
10.     stringstream ss;  
11. int n, i, sum, a;  
12. //共有n行  
13. // 讀取換行  
14. for (i=0; i<n; i++)  
15.     {  
16.         getline(cin, s);  
17.         ss.clear();  
18.         ss.str(s);  
19.         sum=0;  
20. while (1)  
21.         {  
22. //将String转换为int  
23. if ( ss.fail() ) break;  
24.             sum+=a;  
25.         }  
26.         cout << sum << endl;  
27.     }  
28. }



结果如下:


对求和的结果int转字符类型 mysql_头文件

string类型是c语言中char *类型的一种更便利的实现。使用这个类型,不用再去刻意考虑内存的事儿。在做快速开发的时候,string对象提供的便利,还是相当出色的。然而,在这儿提醒一下:string类型很有可能成为一个工程效率问题的根源,产品级别的应用当中,应该尽量避免在深层循环嵌套中使用string类型。
    除size()外,另外两个string常用的方法是find和substr。在下面的代码当中:

string str = "aaaaddddssdfsasdf";
    size_t pos = str.find("ssdf", 3);                       //用if(pos == string::npos) 用来判断是否找到子串。
    string str2 = str.substr(pos, 5);


    find函数从str的第3个位置查起,找到ssdf这个子串后,返回子串的位置。而substr函数从pos位置开始,截取5个字符,赋值给str2。也就是说,str2之后的内容将是ssdfs。

char转换为Srting、String转为char

char转换为Srting

#include <sstream>
 #include <iostream> 

 int main()
 {
     std::stringstream stream;
     char result[8] ;
     stream << 8888; //向stream中插入8888
     stream >> result; //抽取stream中的值到result
     std::cout << result << std::endl; // 屏幕显示 "8888"
 }


String转换为char




1. #include <iostream>  
2. #include <string>  
3. using namespace std;  
4.   
5. void main()  
6. {  
7. "abcd";  
8. char *p=new char[s.size()+1];  
9.   strcpy(p,s.c_str());  
10.   cout<<p[1];  
11. }

转换:       

1、string 转 CString

       CString.format("%s", string.c_str());

2、char * 转 CString

      CString.format("%s", char*);

3、char * 转 string

    string s(char *);

4、string 转 char *

     char *p = string.c_str();

5、CString 转 string

      string s(CString.GetBuffer(CString.GetLength()));

6、CString 转 char *

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

      不建议用(LPCTSTR)进行强制类型转化,这样strtest大小发生变化时会出现错误。

7、CString 转 char[100]

char a[100];
      CString str("aaaaaa");
       strncpy(a,(LPCTSTR)str,sizeof(a));

注意

1、string -> CString

      CString.format("%s", string.c_str());

      用c_str()确实比data()要好.

2、CString -> string

      string s(CString.GetBuffer());

      GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.

3、有三个函数可以将字符串的内容转换为字符数组和CSstring

    (1)data(),返回没有”\0“的字符串数组

    (2)c_str(),返回有”\0“的字符串数组

    (3)copy()

4、将字符转换为整数,可以使用atoi、_atoi64或atol。

5、将数字转换为CString变量,可以使用CString的Format函数

      CString s;

      int i = 64;

      s.Format("%d", i)

      Format函数的功能很强,值得你研究一下。

性能比较

1、安全性>

CString > string > char*;

2、灵活性

CString > string >char*;

3、可移植性

char* = string > CString