标准类型String
1、直接初始化和拷贝初始化(复制初始化)的区别
直接初始化直接调用与实参匹配的构造函数
复制初始化总是调用复制构造函数,复制初始化首先使用指定构造函数创建一个临时对象,让后用复制构造函数将那个临时对象复制正在创建的对象。所以当复制构造函数被声明为私有时,所用的复制初始化都不能使用。
2、初始化string对象的方式
a)string s1 默认初始化,s1是一个空串
b)string s2(s1) s2是s1 的副本
c)string s2 = s1 同上
d)string s3(“value”) s3 是字面值 value的副本 (直接初始化)、
e)string s3 = “value” 拷贝初始化
f)string s4(n, ‘c’) 由连续n个c组成的字符串(直接初始化)
3、string对象的操作
a)cout << s;
b)cin >> s;
c)getline(cin, s); 读取一行
d)s.empty();
e)s.size();
f)s[n];
g)s1 + s2 返回s1和s2连接后的结果
h)s1 == s2;
i)s1 = s2;
j)s1 != s2;
k)<、<=、>、>=
4、string s; cin >> s;
这段程序首先定义一个名为s的空string,然后将标准输入的内容读取到s中。在执行读取操作时,string对象会自动忽略开头的空白(即空格符、换行符、制表符等)并从第一个真正的字符开始读起,知道遇到下一处空白为。“ hello ”,输出将是hello,输出结果没有任何空格。
5、表达式中混用了带符号数和无符号数将可能产生意想不到的结果。例如,假设n是一个具有复制的int,则表达式s.size() < n 的判断结果几乎肯定是true。这是因为负值n会自动地转换成一个比较大的无符号值。如果一条表达式中已经有了size() 函数就不要使用int了,这样可以避免混用int 和 unsigned 可能带来的问题。
6、字面值和string对象相加
当把string对象和字符字面值及字符串字面值混在一条语句中使用时,必须确保每个假发运算符(+)的两侧的运算对象至少有一个是string。
7、<cstdio> 中的c表示这是一个属于C语言标准库的头文件。
8、cctype 头文件中的函数
a)isalnum(c) 当c是字母或数字时为真
b)Isalpha(c) 当c是字母时为真
c)iscntrl(c) 当c是控制字符时为真
d)isdigit(c) 当c是数字时为真
e)isgraph(c) 当c不是空格但可以打印室为真
f)islower(c) 当c是小写字母时为真
g)isprint(c) 当c是可打印字符时为真
h)ispunct(c) 当c是标点符号时为真
i)isspace(c) 当c是空白时为真
j)isupper(c) 当c是大写字母时为真
k)isxdigit(c) 当c是十六进制数字时为真
l)tolower(c) 如果c是大写字母,输出对应的小写字母;否则原样输出c
m)toupper(c) 如果c是小写字母,输出对应的大写字母;否则原样输出c
9、加引用可以更改字符串中的字符
for (auto c : str) cout << c << endl;
for (auto &c : str) c = toupper(c); cout << str << endl;
10、构造string的其他方法
string s(cp, n) s是cp(指针)指向的数组中前n个字符的拷贝。此数组至少应该包含n个字符
string s(s2, pos2) s是string s2从下表pos2开始的字符的拷贝。若pos2>s2.size(),构造函数的行为未定义。
string s(s2, pos2, len2) s是string s2从下表pos2开始len2个字符的拷贝。若pos2>s2.size(),构造函数的行为未定义。不管len2的值是多少,构造函数至多拷贝s2.size()-pos2个字符。
11、substr操作,字符串截取 ,返回一个string的一部分或全部的拷贝。
s.substr(pos, n) 返回一个string,包含s中从pos开始的n个字符的拷贝。pos的默认值为0,n的默认值为s.size()-pos,即拷贝从pos开始的所有字符。
12、insert、erase、append、replace
s.insert(pos, args); 在pos之前插入args指定的字符。Pos可以是一个下表或一个迭代器。接受下表的版本返回一个指向s的引用;接受迭代器的版本返回指向第一个插入字符的迭代器。
s.erase(pos, len); 删除从位置pos开始的len个字符。如果len被省略,则删除从pos开始直至s末尾的所有字符。返回一个指向s的引用
s.assign(args) 将s中的字符替换为args指定的字符。返回一个指向s的引用
s.append(args) 将args追加到s。返回一个指向s的引用。
s.replace(range,args) 删除s中范围rang内的字符,替换为args指定的字符。rang或者是一个下表和一个长度,或者是一对指向s的迭代器。返回一个指向s的引用。
13、string搜索操作,搜索不到返回-1
s.find(args) 查找s中args第一次出现的位置
s.rfind(args) 查找s中args最后一次出现的位置
s.find_first_of(args) 在s中查找args中任何一个字符第一次出现的位置
s.find_last_of(args) 在s中查找args中任何一个字符最后一次出现的位置
s.find_first_not_of(args) 在s中查找第一个不在args中的字符
s.find_last_not_of(args) 在s中查找最后一个不在args中的字符
C++ string
最新推荐文章于 2021-10-30 11:22:21 发布