1 std::string_view類
? ? ? ? string_view基本上就是const string&的簡單替代品,但不會產生開銷。他不復制字符串。
? ? ? ? string_view添加了remove_prefix(size_t)和remove_suffix(size_t)方法,前者將起始指針給定的偏移量來收縮字符串,后者則將結尾指針倒退給定的偏移量來收縮字符串。
string_view.data();string{string_view};
? ? ? ? 只能以這種方式接受const string&。
? ? ? ? 返回字符串的函數應返回const std::string&或string,但不應返回string_view,有返回的string_view無效的風險,例如當它指向的字符串需要重新分配時。
1.1 永遠不要使用string_view保存臨時字符串的視圖
1.2 同string的末尾加s,可用末尾加sv將字面量解釋為std::string_view
2 字符串格式化
? ? ? ? format()的一般占位符:{},中間的格式[index][:specifiier],表示索引和格式說明符,省略索引和顯示說明索引不能混用。
2.1 格式說明符
[[fill]align][sign][#][0][width][.precision][type]
1. width
? ? ? ? width指定待格式化的值所占字段的最小寬度,例如5.width也可以是另一組花括號,成為動態寬度。如果在花括號中指定了索引,例如{3},則動態寬度的width取自給定索引對應的format()的實參。如果未指定索引,例如{},則width取自format()的實參列表的下一個參數。
int i{42};
cout<<format("|{:5}|",i)<<endl;
cout<<format("|{:{}}|",i,7)<<endl;
2. [fill]align
? ? ? ? align表示對齊方式<表示左對齊,>表示右對齊,^表示居中對齊。[fill]表示指定長度未到時的填充字符。
3. sign
? ? ? ? -表示只顯示負數的符號,+代表都顯示,space代表對負數使用符號,對正數使用空格。
4. #
? ? ? ? 在指定格式前插入前綴來表示格式
5.type
? ? ? ? 指定了給定值要被格式化的類型。
6. precision
? ? ? ? 指定字符串或浮點的精度。
7.0
? ? ? ? 指定了對齊則忽略此項,否則在前綴之后,數值的前面填充0.