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陣列與IplImage、Mat之間互相轉換
Mat input_image; unsigned char* input = new unsigned char[input_image.rows * input_image.cols]; //這裡假設是單通道的,如果不是,需要乘以input_image.channels() //將unsign
qt中QString與String與int,double,char*之間的轉換
本文介紹的是Qt 各種資料型別轉換,病沒有多少內容,只是例項操作了一下,多多參考!如果你是初學者的話。在程式設計的過程中,總是不斷的去轉換資料型別。先來看看內容。 1、QString --> string QString.toStdString(); 2、string --> QString
string與int和char之間的型別轉換問題
**string字串轉化為int** ①: #include<stdlib.h> string a; cin >> a;//1111 int n1
string、const char*、 char* 、char[]相互轉換
其他 相互 str 了解 相互轉換 AC cell include 打印 string、const char*、 char* 、char[]四者類型經常會需要轉化。 一:轉化總結形式如下: 使用時,要對源格式和目標格式進行初始化。源格式賦值為具體的內容,目標格式賦值為空。
【14】unsigned char、char、int之間的轉換
一、把所佔位元組較大的資料賦值給所佔位元組較小的資料 unsigned short a = 256; char b = a; printf("%d",b); 輸出的b的值是0,因為256超過了char型別的最大值,即寬資料變窄資料:保留低地址資料 256 即000
C++字元型別轉換(BSTR、_bstr_t與CString、char *轉換)
1、CString轉BSTR BSTR bstr; CString strSql; bstr = strSql.AllocSysString(); … SysFreeString(bstrText
Qt中Qstring、char *、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中字符串的編碼與解碼以及編碼之間轉換(decode、encode)
python3 encode 由於 表示 nic code .... 以及 mage 一、編碼 二、編碼與解碼 Python3中對py文件的默認編碼是urf-8。但是字符串的編碼是Unicode。 由於Unicode采用32位4個字節來表示一個字符,存儲和傳輸太浪費資
[java]String和Date、Timestamp之間的轉換
方式 父類 print 關系 否則 get pre rac pri 一、String與Date(java.util.Date)互轉 1.1 String -> Date Date date = DateFormat.parse(String str); Stri
Java中String與BufferedReader、InputStream轉換
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和Date、Timestamp之間的轉換
一、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入門(九)——String與Int、Double、Float等數字相互轉換
Swift的三種轉換模式 在Swift裡面,Int、float、double等數字型別自成一派,但它們和String型別之間的轉換總是不太方便,這裡總結一下它們相互轉換的方法。總結下來一共有三種轉換模式,分別舉例說明。 一、String轉數字 這裡以S
Java:String和Date、Timestamp之間的轉換
一、String與Date(java.util.Date)互轉 // 1.1、String -> Date @org.junit.Test public void testStringToDate() throws ParseException
java中string與date(日期)格式之間的轉換
經常遇到string和date之間的轉換,把相關的內容總結在這裡吧: 1.string格式轉化為Date物件: //把string轉化為dateDateFormat fmt =new SimpleDateFormat("yyyy-MM-dd"); Date date =
java中byte、short、char、int的轉換
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"