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