C++ 字符串输入
字符串输入
-
面向单词
-
cin :
- 输入出错时须使用cin.clear()取消异常状态才能继续读入缓冲区的内容,且不论正常与否始终不丢弃缓冲区中已输入的字符(包括换行符)
- 使用空白(空格、制表符和换行符)来确定字符串的结束位置。
- 自动添加空字符。
-
-
面向行
-
cin.getline(m,n)
-
m 存储输入行的数组名称,n 为读取字符数。
-
最多读取 n-1 个字符,自动添加空字符。
- 换行符确定输入结尾,停止读取。
- 不保存换行符,用空字符代替换行符。
-
异常输入
-
读到空行时将空串赋给原数组,不设置失效位,且丢弃行尾换行符。
- 读取字符数 > n-1 时,原数组读取前 n-1 个字符且自动补上 '\0' ,并设置失效位,剩余字符及换行符 '\n' 仍保留在输入队列
-
-
- 其实 cin.getline() 是成员函数,有三个参数:cin.getline(a, b, c)
cin.getline(char* ch, int num, char f);
ch 和 num 的作用如上,而f 是结束字符。当提前遇到f ,输入结束,从输入流中读取并丢掉f 字符,自动向字符串结尾添加空字符。*若不指定结束符,则默认结束符是换行符。
-
cin.get(m,n)
-
与 getline(m,n) 工作方式相同,但不再读取并丢弃换行符,而是将其留在输入队列中。
-
异常输入
-
-
- 读到空行时将空串赋给原数组,输入流中保留换行符,且设置失效位。恢复命令:cin.clear()。
- 读入数据长度 > n-1 时,原数组读取前 n-1 个字符并自动加上 '\0' ,不设置失效位,剩余字符及换行符 '\n' 不被丢弃,保存在输入队列。
- 较早的get(char *, int)版本在读取空行后,返回的值不为false。然而,对于这些版本来说,如果读取了一个空行,则字符串中第一个字符将是一个空字符。
-
-
-