《C++标准程序库》小结第十一章-String

1、追求性能,底层编程的时候,用char。追求方便安全,应用编程的时候,用string。

2、string相当于char的类封装。尽量使用string的成员函数,不要使用外部STL算法函数。

3、string::npos相当于string的末尾标记,类似于char的’\0’,类似于STL的coll.end()。注意返回值最好是string::size_type,绝对不可以用unsigned int,因为npos=-1。int也最好不要用了。

4、下面的写法正确,但是效率不高:

string c = a + b;

原因是会产生临时数据。高效率的写法是:

string c = a;

c += b;

 

5、如果要获得整句包含空格的字符串,建议用getline而不是cin,cin会跳过空格。要用cin,这样干:cin >> std::skipws>> string;

getline(std::cin, string);

getline(std::cin, string , ‘:’);//遇到‘:’号就停止。注意是单字符!!

6、与众不同的函数

函数名

作用

replace

替换字符。与STL的replace不同,这里是给定区间替换

c_str

返回一个const char*的字符串,如果想进行操作,就请复制出来。推荐用strcpy

data

类似于c_str(),但是末尾不会自动添加’\0’

substr

返回子字符串

find

搜寻第一个指定字符

rfind

搜寻最后一个指定字符

find_first_of

第一个与给定的多个字符中任何一个相同的字符。这个很有用。比如搜寻一些终结符号:

string delim(“ \t\0:”);

s.find_first_of(ctr, delim);遇到delim中任何一个符号就返回

find_last_of

最后一个与给定的多个字符中任何一个相同的字符

find_first_not_of

第一个与给定的多个字符中任何一个都不同的字符

find_last_not_of

最后一个与给定的多个字符中任何一个都不同的字符

 

7、string没有提供正则表达式和文本处理。文本处理可以使用string算法自己编写程序。正则表达式C++tr1/C++11标准已经支持,需要包含#include<regex>

 

8、string对待’\0’与Char不同,这点要注意。

a)        string(“nico”)  “nico”

b)       string(“nico”, 5) “nico\0”

c)        string(5, ‘\0’) “\0\0\0\0\0”

 

9、string可以看做vector<char>或者vector<wchar>。这样很多STL算法可以用。string的迭代器是random-access随机迭代器。有些STL实作在实现string时使用了引用计数技术使得相关操作很快。

 

11、有关非英文编码,请看后面的国际化一章。

你可能感兴趣的:(《C++标准程序库》小结第十一章-String)