程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 淺析string 與char* char[]之間的轉換

淺析string 與char* char[]之間的轉換

編輯:關於C++

淺析string 與char* char[]之間的轉換。本站提示廣大學習愛好者:(淺析string 與char* char[]之間的轉換)文章只能為提供參考,不一定能成為您想要的結果。以下是淺析string 與char* char[]之間的轉換正文


1、起首必需懂得,string可以被算作是以字符為元素的一種容器。字符組成序列(字符串)。有時刻在字符序列中停止遍歷,尺度的string類供給了STL容器接口。具有一些成員函數好比begin()、end(),迭代器可以依據他們停止定位。

留意,與char*分歧的是,string紛歧定以NULL('\0')停止。string長度可以依據length()獲得,string可以依據下標拜訪。所以,不克不及將string直接賦值給char*。

2、string 轉換成 char *

假如要將string直接轉換成const char *類型。string有2個函數可以應用。

一個是.c_str(),一個是data成員函數。

例子以下:

string s1 = "abcdeg";
const char *k = s1.c_str();
const char *t = s1.data();
printf("%s%s",k,t);
cout<<k<<t<<endl;

如上,都可以輸入。內容是一樣的。然則只能轉換成const char*,假如去失落const編譯不克不及經由過程。

那末,假如要轉換成char*,可以用string的一個成員函數copy完成。

string s1 = "abcdefg";
char *data;
int len = s1.length();
data = (char *)malloc((len+1)*sizeof(char));
s1.copy(data,len,0);
printf("%s",data);
cout<<data;

3、char *轉換成string

可以直接賦值。

string s;

char *p = "adghrtyh";

s = p;

不外這個是會湧現成績的。

有一種情形我要解釋一下。當我們界說了一個string類型以後,用printf("%s",s1);輸入是會出成績的。這是由於“%s”請求前面的對象的首地址。然則string不是如許的一個類型。所以確定失足。

用cout輸入是沒有成績的,若必定要printf輸入。那末可以如許:
printf("%s",s1.c_str())

4、char[] 轉換成string

這個也能夠直接賦值。然則也會湧現下面的成績。須要異樣的處置。

5、string轉換成char[]

這個因為我們曉得string的長度,可以依據length()函數獲得,又可以依據下標直接拜訪,所以用一個輪回便可以賦值了。

如許的轉換弗成直接賦值。

    string pp = "dagah";
    char p[8];
    int i;
    for( i=0;i<pp.length();i++)
        p[i] = pp[i];
    p[i] = '\0';
    printf("%s\n",p);
    cout<<p;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved