std::string 與 char* 之間的轉換
阿新 • • 發佈:2019-01-01
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