c++11字符串:string

新增數字和string的變換函數

string–>整型

stoi, stol, stoul, stoll, stoull
例如: int stoi(const std::string& str, std::size_t* pos = 0, int base = 10);
實現的效果與strtol, strtoll, strtoul, strtoull相同。
如果base爲0,由函數自行選擇進制:如果前綴是0,使用八進制;如果前綴是0x或0X,使用十六進制;其他情況使用十進制。

string–>浮點型

stof, stod, stold
例如: float stof(const std::string& str, std::size_t* pos = 0);
實現的效果與strtof, strtod相同。
還支持二進制浮點表達式,例如“-0xa.cp-2”表示的是16進制下的-0xa.c再乘上2的-2次方,-(10+12/16)*2^(-2)=-2.6875,其中0x或0X是必需的,其他部分可以省略。

以上函數,如果pos不爲空,將存儲第一個未轉換字符的位置信息;如果無法轉換,拋出std::invalid_argument;如果溢出拋出std::out_of_range。

數字–>string

to_string函數有多個重載版本,參數分別支持int, long, long long, unsigned, unsigned long, unsigned long long, float, double, long double向string的轉化。
例如: std::string to_string(int value);
to_string實現的效果和sprintf相同。

basic_string主要的新增部分

template <class CharT, 
	class Traits = std::char_traits<CharT>, 
	class Allocator = std::allocator<CharT>>
class basic_string;

移動構造,移動賦值,assign增加右值引用版本:
basic_string(basic_string&& other) noexcept;
basic_string& operator=(basic_string&& str);
basic_string& assign(basic_string&& str);

構造,賦值,assign,insert,append,+=,replace增加初始化列表版本:
basic_string(std::initializer_list<CharT> ilist, const Allocator& alloc = Allocator());
basic_string& operator=(std::initializer_list<CharT> ilist);
basic_string& assign(std::initializer_list<CharT> ilist);
basic_string& operator+=(std::initializer_list<CharT> ilist);
basic_string& replace(const_iterator first, const_iterator last, std::initializer_list<CharT> ilist);

新增front,back,pop_back:
如果string爲空,函數行爲未定義
CharT& front();
const CharT& front() const;
CharT& back();
const CharT& back() const;
void pop_back();

cbegin,cend,crbegin,crend:
相比begin,end增加顯式返回const迭代器的版本
const_iterator cbegin() const noexcept;
const_iterator cend() const noexcept;
const_reverse_iterator crbegin() const noexcept;
const_reverse_iterator crend() const noexcept;

shrink_to_fit:
請求移除無用空間,如果發生了內存重分配,所有指針、引用、迭代器都變爲無效
void shrink_to_fit();

hash對string進行了特化:
template<> struct hash<std::string>;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章