字符串

字符串

字符串是存储在内存的连续字节中的一系列字符。C++处理字符串的方式有两种。第一种来自C语言,常称为C风格字符串。另一种基于string类库。

1. C-风格字符串

  • C-风格字符串以空字符结尾,空字符被写作 \0,其ASCII码为0。
  • 注意区分字符常量和字符串常量。字符串常量(使用双引号)不能与字符常量(使用单引号)互换。字符常量(如‘S’)是字符串编码的简写表示。但 “S”不是字符常量,它表示的是两个字符(字符S和\0)组成的字符串,“S”实际表示的是字符串所在的内存地址。

拼接字符串常量

  • C++允许凭借字符串字面值。拼接时不会在被连接的字符串之间添加空格,第二个字符串的第一个字符将紧跟在第一个字符串的最后一个字符(不考虑\0)后面。第一个字符串中的\0字符将被第二个字符串的第一个字符取代。

在数组中使用字符串

  • 标准头文件cstring提供了与字符串相关的一些函数。
  • sizeof()运算符指出整个数组的长度,单位为字节,char占一个字节
  • strlen() 函数返回的是存储在数组中的字符串的长度,而不是数组本身的长度。strlen()只计算可见的字符,而不把空字符计算在内。

字符串输入

  • cin使用空白(空格、制表符和换行符)来确定字符串的结束位置,这意味着cin在获取字符数组输入时只读取一个单词。读取该单词后,cin将该字符串放到数组中,并自动在结尾添加空字符。

每次读取一行字符串输入

  • getline()函数读取整行,它使用通过回车键输入的换行符来确定输入结尾。要调用这种方法,可以使用cin.getline()。该函数有两个参数。第一个参数是用来存储输入行的数组的名称,第二个参数是要读取的字符数。如果这个参数是20,则函数最多读取19个字符,余下的空间用于存储自动在结尾处添加的空字符。getline()成员函数在读取指定数目的字符或遇到换行符时停止读取。

  • get(name, 20)遇到遇到换行符后停止输入,并将其留在输入队列中。
    使用不带任何参数的cin.get()调用可读取下一个字符(即使是换行符),因此可以用它来处理换行符,为读取下一行输入做准备。

  • 空行和其他问题。当get()读取空行后将设置失效位(failbit)。这意味着接下来的输入将被阻断,但可以用下面的命令来恢复输入;cin.clear();
    如果输入行包含的字符数比指定的多,则getline()和get()将把余下的字符留在输入队列中,而getline()还会设置失效位,并关闭后面的输入。

**2. string类简介 **

  • 未被初始化的string对象的长度被自动设置为0。
posted @ 2019-09-06 19:52  ADTXL  阅读(218)  评论(0编辑  收藏  举报