字符串是存储在内存的连续字节中的一系列字符。C++处理字符串的方式有两种。第一种来自C语言,常称为C风格字符串。另一种基于string类库。
注意区分字符常量和字符串常量。字符串常量(使用双引号)不能与字符常量(使用单引号)互换。字符常量(如‘S’)是字符串编码的简写表示。但 “S”不是字符常量,它表示的是两个字符(字符S和\0)组成的字符串,“S”实际表示的是字符串所在的内存地址。
C++允许凭借字符串字面值。拼接时不会在被连接的字符串之间添加空格,第二个字符串的第一个字符将紧跟在第一个字符串的最后一个字符(不考虑\0)后面。第一个字符串中的\0字符将被第二个字符串的第一个字符取代。
getline()函数读取整行,它使用通过回车键输入的换行符来确定输入结尾。要调用这种方法,可以使用cin.getline()。该函数有两个参数。第一个参数是用来存储输入行的数组的名称,第二个参数是要读取的字符数。如果这个参数是20,则函数最多读取19个字符,余下的空间用于存储自动在结尾处添加的空字符。getline()成员函数在读取指定数目的字符或遇到换行符时停止读取。
get(name, 20)遇到遇到换行符后停止输入,并将其留在输入队列中。
使用不带任何参数的cin.get()调用可读取下一个字符(即使是换行符),因此可以用它来处理换行符,为读取下一行输入做准备。
空行和其他问题。当get()读取空行后将设置失效位(failbit)。这意味着接下来的输入将被阻断,但可以用下面的命令来恢复输入;cin.clear();
如果输入行包含的字符数比指定的多,则getline()和get()将把余下的字符留在输入队列中,而getline()还会设置失效位,并关闭后面的输入。
原文:https://www.cnblogs.com/adtxl/p/11477876.html