std string 與 char 之間的轉換

2021-09-25 09:04:26 字數 1150 閱讀 9221

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 <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());

std string 與 char 之間的轉換

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 如 ...

如何把std string當char 使用

std string使用很方便,但有時會碰到這樣的問題,比如我們有乙個結構體,內容如下所示 typedef struct datainfo int i unsigned time datainfo datainfo stinfo stinfo.i 10 stinfo.time time null 如...

char 與char 的區別

乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放,存放函式的引數值,區域性變數的值等。其操作方式類似於 資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料 結構中的堆是兩回事,分配方式倒...