1. 程式人生 > >std::string 與 char* 之間的轉換

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

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

1:把string轉換為char*有三種方法:

1. .data
2. .c_str
3. .copy

using namesapce std;
string str = "hello world";
const char *p = str.data();
printf(p);
//==>
//  hello world
string str = "hello world";
const char *p = str.c_str();
printf(p);
//==>
//  hello world
string str
= "hello world"; char p[40]; str.copy(p, 5, 0);//這裡5,代表複製幾個字元,0代表複製的位置 *(p + 5) = '\0';//要手動加上結束符 printf(p); //==> // hello

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

const char* p = "Hello world";
std::string str = p; // 可以對str直接賦值
cout << str;
//==>
//  hello world

注:

當定義一個string型別的變數後,使用printf_s會出現問題。

std::string str
= "Hello world"; printf_s("%s", str); //==> // 亂碼

這樣的輸出是有問題的,因為%s要求的是後面物件的首地址。但是string不是這樣的型別,所以會出錯。使用

cout << str << endl; //這樣輸出是沒有問題的。
//==>
//  hello world  

或者

printf_s("%s", str.c_str());
//==>
//  hello world