C char string 的相互轉換

2021-09-02 14:02:09 字數 2234 閱讀 2561

1.char [ ]==》string

直接賦值

2. string==》char [ ]3種方法

(1)呼叫  string   的   data   函式

【注】:data除了返回字串內容外,不附加結束符'\0'

【注】:const char* 與 char*之間用const_cast轉換符;

#include#includeusing namespace std;

int main()

//可以返回tchar值

(2)呼叫  string   的  c_str   函式【注】:使用string提供的函式c_str() ,返回乙個以『\0』結尾的字元陣列。

推薦使用strcpy函式

#include#includeusing namespace std;

int main()

(3)呼叫  string   的  copy   函式如:string str="hello"; 

char p[40]; 

str.copy(p,5,0); //這裡5,代表複製幾個字元,0代表複製的位置

*(p+5)='/0';     //要手動加上結束符

cout 

a. string可以被看成是以字元為元素的一種容器, 字元構成序列(字串)。

原因:一般認為是vs準備棄用strcpy的,安全性較低,所以微軟提供了strcpy_s來代替。

然而,strcpy_s並沒有strcpy好用,我們要想繼續在vs2015中使用strcpy該怎麼辦 呢?下面是幾種解決方法

解決方法:

1.  其實在下面的輸出錯誤資訊中有解決方法,「to disable deprecation , use _crt_secure_no_warnings」,意思是我們可以不進行相容性檢查,我們可以在專案-屬性-配置屬性-c/c++-預處理器-預處理定義裡邊加上一句:_crt_secure_no_warnings,如下圖所示

2. 也是在下面的輸出資訊中,我們可以看到有一處錯誤代號「error c4996:」,所以我們可以在程式開頭加上一句

#pragma warning(disable:4996)」就行,意思是忽略這個錯誤,如下圖

3. 可以在:專案-屬性-配置屬性-c/c++中的常規,裡面有個sdl選項,關了。還有在**生成中有個安全檢查選項(/gs)關了。雖然這種方法也可以解決這個問題,但是我本人不太提倡這種解決辦法,還是前兩種解決方法比較好

1.

2. 3.strcpy函式在vs2015無法使用的問題

string int的相互轉換

1.int 轉 string 標頭檔案 include int x stringstream sd sd x string str sd.str 標頭檔案 include strstream ss int sum 0 string c ss sum ss c 2.string 轉 int int t...

int string char的相互轉換

1 string轉換成int include include includeusing namespace std int main method 2 res atoi s.c str method 3 stringstream 很強大 stringstream ss ss s ss res met...

C int string的相互轉換

c 11標準增加了全域性函式std to string string to string int val string to string long val string to string long long val string to string unsigned val string to ...