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

原文地址:https://blog.csdn.net/u010023457/article/details/41855007

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

把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的方法

  1. char* p = "Hello";

  2. std::string str = p; // 可以對str直接賦值

題外話:

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

  1. std::string str = "Hello";

  2. printf_s("%s", str);

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

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

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

  1. std::string str = "Hello";

  2. printf_s("%s", str.c_str());

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章