返回首页 - Notes - 2012

C++ string 标准库


标准库头文件:#include <string>,命名空间:using std::string;


string 标准库支持的几个构造函数

  1. string s1;:默认构造函数,定义空串
  2. string s2(s1);:构造参数字符串的副本
  3. string s3("Ruchee");:构造指定字符串
  4. string s4(3, "a");:构造 N 个指定字符组成的字符串,本例为 "aaa"

cin 标准输入流:忽略开头所有的空白字符,包括换行符,直到再次遇到空白字符时终止读取

getline(cin, str) 函数:接受两个参数,读取时以换行符为终止标志,但保存到 str 时不保存换行符


string 对象常用操作

  1. empty():检测是否为空
  2. size():返回字符个数,不包括末尾的空字符
  3. str[2]:返回对应位置的字符,下标从 0 开始,str[0] 表示第一个字符,str[str.size() - 1] 表示最后一个字符
  4. str1 + str2:两字符串连接
  5. ==!=<<=>>=:这些比较运算符对 string 照样有效

size() 的返回值是 string::size_type 类型,而不是很容易误以为的 int 型,所以不要把 size() 的返回值赋给一个 int 型变量

虽然不能确切知道 string::size_type 对应的数据类型,但可以肯定的是它是一个 unsigned 类型

为了保证跨平台时的数据安全性,在保存 size() 返回值时务必使用标准库类型 string::size_type


string 对象可以与字符串字面值进行连接操作,但需要满足条件:+ 操作符的左右两个操作数中必须至少有一个是 string 对象

典型的连接表达式

  1. str = str1 + ", ";:正确
  2. str = "hello" + "world";:错误,+ 操作符左右两侧都是字符串字面值
  3. str = "hello" + "world" + str1;:错误,第一个 + 操作符出现了和上例一样的问题

#include <cctype> 定义的函数

  1. isalpha(ch):测试是否为字母
  2. isupper(ch):测试是否为大写字母
  3. islower(ch):测试是否为小写字母
  4. toupper(ch):如果是小写字母则返回其大写形式
  5. tolower(ch):如果是大写字母则返回其小写形式
  6. isdigit(ch):测试是否为数字
  7. isalnum(ch):测试是否为字母或数字
  8. ispunct(ch):测试是否为标点符号
  9. isspace(ch):测试是否为空白字符
  10. iscntrl(ch):测试是否为控制字符
  11. isprint(ch):测试是否为可打印字符
  12. isgraph(ch):测试是否为非空格、可打印字符
  13. isxdigit(ch):测试是否为十六进制数

date : 2012-04-01、2012-04-02