(1)C++字符串和C字符串的轉換
? ? ? ? ?C++提供了三種方法可以將C++字符串轉化為C字符串,分別是data(),c_str(),copy()成員函數來實現。
? ? ? ? ?1)data()是以字符數組的形式返回字符串內容,但并不添加‘\0’;
? ? ? ? ? 2)c_str()生成一個const char*指針,指向一個空字符的數組,數組中的數據是臨時的,當有一個改變這些數據的成員函數被調用時,數據就會失效(比如說調用c_str()之后字符串發生變化,則c_str()生成的指針指向的數據也會發生變化)
? ? ? ? ?3)copy(p,n,size_type_off=0)表明從string類型對象中至多復制n個字符到字符指針p指向的空間,默認指定位置開始(0),返回真正從對象中復制的字符。(p中一定要確保能夠存儲n個字符)。
(2)string和int類型的相互轉換
? ? ? ? ? 1)int類型轉換為string類型
? ? ? ? ? ? ? ? ? a)可以通過數據流借助緩沖區的概念
? ? ? ? ? ? ? ? ? b)借助snprintf()函數
? ? ? ? ? ? ? ??? int snprintf(char*str,size_t size,const char*format,...);//后面主要的是可變參數,是一些變換的格式和對應需要變換的對象
? ? ? ? ? ? ? ? ? ?功能:如果格式化字符長度小于size,則全部復制,并在末尾添‘\0’;如果大于size,則只復制其中的size-1,并在末尾添零;函數成功返回寫入字符串的長度,失敗返回負值;
? ? ? ? ? 2)string類型轉化成int類型
? ? ? ? ? ? ? ? ?使用strtol(str to long),strtoll(str to long long),strtoul(str to unsigned long),strtoull(str to unsigned long long)函數
? ? ? ? ? ? ? ? ?long int strtol(const char*nptr,char**endptr,int base);
? ? ? ? ? ? ? ? ? 實現字符串nptr根據base轉換成各種類型;參數base的范圍為2~36或0,如果參數指定為0,則會根據具體情況判斷進制,如果前面的字符是0x則為16進制,如果是0則為八進制,否則為10進制;函數執行過程中會掃描參數nptr字符串,跳過前面的空格式串,直到遇上數字或正負號開始轉換,遇到非法數字或字符串結束時結束轉換,endptr返回的是遇到不合條件返回的字符串,如果正常則為空;
?