std::string 與 char* 之間的轉換



std::string 是c++標準庫裏面其中一個,封裝了對字符串的操作

1:把string轉換爲char* 有3中方法:

1:data 
如: 
string str = "Hello"; 
char *p = str.data(); 

2:.c_str 
如:
string str = "Hello"; 
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;


2:把char* 轉換爲 string的方法

char* p = "Hello";
std::string str = p; // 可以對str直接賦值


題外話:

當我們定義一個string類型的變量後,使用printf_s的問題。

std::string str = "Hello";
printf_s("%s", str);

這樣的輸出是有問題的,因爲%s要求的是後面對象的首地址。但是string不是這樣的類型,所以會出錯。使用

cout << str << endl; 這樣輸出是沒有問題的。

如果真的要使用printf_s(),修改如下:

std::string str = "Hello";
printf_s("%s", str.c_str());

發佈了56 篇原創文章 · 獲贊 12 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章