Bootstrap

UE学习日志#22 C++笔记#8 基础复习8 string和string_view2

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.

2.2(待补充)支持自定义类型

;