1. 程式人生 > >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;

strcpy(p,pp);  也是可以的

6、char *轉換成char []

char *p="ertyu";

char r[10];

strcpy(r,p);

相關推薦

string char* char[]之間轉換

1、首先必須瞭解,string可以被看成是以字元為元素的一種容器。字元構成序列(字串)。有時候在字元序列中進行遍歷,標準的string類提供了STL容器介面。具有一些成員函式比如begin()、end(),迭代器可以根據他們進行定位。 注意,與char*不同的是,stri

unsigned char陣列IplImageMat之間互相轉換

Mat input_image; unsigned char* input = new unsigned char[input_image.rows * input_image.cols]; //這裡假設是單通道的,如果不是,需要乘以input_image.channels() //將unsign

qt中QStringStringint,double,char*之間轉換

本文介紹的是Qt 各種資料型別轉換,病沒有多少內容,只是例項操作了一下,多多參考!如果你是初學者的話。在程式設計的過程中,總是不斷的去轉換資料型別。先來看看內容。 1、QString --> string QString.toStdString(); 2、string --> QString

stringint和char之間的型別轉換問題

**string字串轉化為int** ①: #include<stdlib.h> string a; cin >> a;//1111 int n1

stringconst char* char* char[]相互轉換

其他 相互 str 了解 相互轉換 AC cell include 打印 string、const char*、 char* 、char[]四者類型經常會需要轉化。 一:轉化總結形式如下: 使用時,要對源格式和目標格式進行初始化。源格式賦值為具體的內容,目標格式賦值為空。

【14】unsigned charcharint之間轉換

一、把所佔位元組較大的資料賦值給所佔位元組較小的資料 unsigned short a = 256; char b = a; printf("%d",b); 輸出的b的值是0,因為256超過了char型別的最大值,即寬資料變窄資料:保留低地址資料 256  即000

C++字元型別轉換(BSTR_bstr_tCStringchar *轉換

1、CString轉BSTR BSTR bstr; CString strSql;  bstr = strSql.AllocSysString(); …  SysFreeString(bstrText

Qt中Qstringchar *QByteArray之間轉換

轉載自http://blog.51cto.com/ibeyond/373948 char * 與 const char *的轉換 char *ch1="hello11"; const char *ch2="hello22"; ch2 = ch1;//不報錯,但有警告 ch1 = (char *)

char*char[]及string的區別及相互轉換

區別: char *s1:s1是一個指向字串的指標; char s2[]:s2是一個字元陣列; string s3:s3是一個string類的物件. 【記憶體模型】 例如: char *s1 = "

Python3中字符串的編碼解碼以及編碼之間轉換(decodeencode)

python3 encode 由於 表示 nic code .... 以及 mage 一、編碼 二、編碼與解碼 Python3中對py文件的默認編碼是urf-8。但是字符串的編碼是Unicode。 由於Unicode采用32位4個字節來表示一個字符,存儲和傳輸太浪費資

[java]String和DateTimestamp之間轉換

方式 父類 print 關系 否則 get pre rac pri 一、String與Date(java.util.Date)互轉 1.1 String -> Date Date date = DateFormat.parse(String str); Stri

Java中StringBufferedReaderInputStream轉換

1、String –> InputStream InputStrem is = new ByteArrayInputStream(str.getBytes()); 或者 ByteArrayInputStream stream= new ByteArrayInputStream(str.getB

js獲取一天的開始時間和結束時間和日期字串數值之間轉換

var time="2016-12-29"; var dayStart = Date.parse(new Date(time));//2016-12-29 0:0:0 var dayEnd = new Date().setTime((dayStart/1000+24*60*60-1

String和DateTimestamp之間轉換

一、String與Date(java.util.Date)互轉      1.1 String -> Date 編碼:   String dateStr = "2010/05/04 12:34:23";           Date date = new D

VC char和TCHAR之間轉換

                char:計算機程式語言(c、c++、java、VFP等)中可容納單個字元的一種基本資料型別。TCHAR:為了滿足Unicode編碼,對char的擴充套件,即_T(“str”)表示TCHAR型別C++支援兩種字串,即常規的ANSI編碼(使用""包裹)和Unicode編碼(使用L

Swift入門(九)——StringIntDoubleFloat等數字相互轉換

Swift的三種轉換模式 在Swift裡面,Int、float、double等數字型別自成一派,但它們和String型別之間的轉換總是不太方便,這裡總結一下它們相互轉換的方法。總結下來一共有三種轉換模式,分別舉例說明。 一、String轉數字 這裡以S

Java:String和DateTimestamp之間轉換

一、String與Date(java.util.Date)互轉 // 1.1、String -> Date @org.junit.Test public void testStringToDate() throws ParseException

java中stringdate(日期)格式之間轉換

經常遇到string和date之間的轉換,把相關的內容總結在這裡吧: 1.string格式轉化為Date物件: //把string轉化為dateDateFormat fmt =new SimpleDateFormat("yyyy-MM-dd"); Date date =

java中byteshortcharint的轉換

java中byte、short、 char和Int“字面值”之間可以不加強制型別轉換,只要int型別的“字面值”不超過byte、short、char型別的範圍。如: byte i = 10(java中預設為int型別);可以轉換;byte i = 128;不可以轉換,128

char*char[]string 互轉

string轉換為char* 1.data string str="good boy"; const char *p=str.data(); 2.c_str string str="good boy"