C++中const char*, string 與char*的轉化
阿新 • • 發佈:2019-01-09
1:string轉化成const char*
可以通過呼叫string類中的c_str函式實現string向const char*的轉換
//string與const char*轉換
string s = "string_To_const char* ";
const char *c_s=s.c_str();
const char *c_ss = s.data();
還可以直接使用string類中的data()函式,直接對const char *賦值
但是c_s並不是不變的,如果在之後改變了s的內容,c_s仍然會隨著改變,這樣就會造成不可彌補的錯誤!所以需要重新定義變數開記憶體管理c_s指標;
利用string的一個建構函式對string類的物件賦值即可
//const char*轉換string
const char* p = "const char* _To_string";
string y(p);
3:string與char*的轉換
string不能直接轉換為char*,需要通過其他的方法來實現,現在簡單介紹幾種方法:
1:通過函式strcpy來實現;
這裡需要注意:1):給char* c分配記憶體空間時需要length()+1,因為字元指標c最後有一個‘\0’結尾;2):使用strcpy函式時系統會報錯,在專案屬性->C\C++前處理器->前處理器定義裡面加入_CRT_SECURE_NO_WARNINGS; 2:通過copy函式實現://string與char*的轉換 string ppp = "stringTochar*"; char* c; const int len = ppp.length(); c=new char[len+1]; strcpy(c,ppp.c_str());
string ppp = "stringTochar*";
char *d;
d=new char[len+1];
*(d+len)='\0';
ppp.copy(d,len,0);
這裡一定要加上第四句語句因為char* 最後有一個'\0',如果不進行賦值的話結果就會出現亂碼;4:char*轉化成string
//char*與string的轉換
char* pp = "stringTochar*";
string q(pp);
5:const char*轉化成char* 使用strcpy函式即可
//const char*轉化成char*
const char* csc = "constchar*Tochar*";
char* cc;
int length = strlen(csc);
cc = new char[length+1];
strcpy(cc,csc);
cout<<cc<<" "<<csc<<endl;
下面給出程式碼和結果:
// string.cpp : 定義控制檯應用程式的入口點。
//
#include "stdafx.h"
#include<iostream>
#include<string>
#pragma warning(disable:4996)
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
//string與const char*轉換
string s = "string_To_constchar*";
const char *c_s=s.c_str();
const char *c_ss = s.data();
cout<<s<<" "<<c_s<<" "<<c_ss<<endl;
//const char*轉換string
const char* p = "constchar*_To_string";
string y(p);
cout<<p<<" "<<y<<endl;
//char*與string的轉換
char* pp = "stringTochar*";
string q(pp);
cout<<pp<<" "<<q<<endl;
//string與char*的轉換
string ppp = "stringTochar*";
char* c;
const int len = ppp.length();
c=new char[len+1];
strcpy(c,ppp.c_str());
char *d;
d=new char[len+1];
*(d+len)='\0';
ppp.copy(d,len,0);
cout<<ppp<<" "<<c<<" "<<d<<endl;
//const char*轉化成char*
const char* csc = "constchar*Tochar*";
char* cc;
int length = strlen(csc);
cc = new char[length+1];
strcpy(cc,csc);
cout<<cc<<" "<<csc<<endl;
cin.get();
cin.get();
return 0;
}
執行結果: