cin是标准输入流,从标准输入设备(键盘)获取数据。
只有在输入完数据后再按回车键,该行数据才能被送入键盘缓冲区,形成输入流,提取运算符>>才能从中提取数据
程序中的变量通过流提取符“>>”从流中提取数据。流提取符“>>”从流中提取数据时通常跳过输入流中的空格、tab键、换行符等空白字符。
cin的终止
当遇到无效字符或遇到文件结束符(不是换行符,是文件中的数据已读完)时,输入流cin就处于出错状态,即无法正常提取数据
正常状态为true
出错状态为false
ctrl+z表示文件结束符。
常见用法
whie((cin>>grade)!=false)
{
//…….
}
get()和getline
特点 | 使用形式 | 用法 |
不带参数 | ch=cin.get() | 用来从指定的输入流中提取一个字符(包括空白字符),函数的返回值就是读入的字符。 若遇到输入流中的文件结束符,则函数值返回文件结束标志EOF(End Of File),一般以-1代表EOF,用-1而不用0或正值,是考虑到不与字符的ASCII代码混淆。 |
有一个参数的get函数 | cin.get(ch) | 其作用是从输入流中读取一个字符,赋给字符变量ch。如果读取成功则函数返回true(真),如失败(遇文件结束符) 则函数返回false(假)。 |
有3个参数的get函数 | cin.get(字符数组或字符指针, 字符个数n, 终止字符) | 其作用是从输入流中读取n-1个字符,赋给指定的字符数组(或字符指针指向的数组),如果在读取n-1个字符之前遇到指定的终止字符,则提前结束读取。如果读取成功则函数返回true(真),如失败(遇文件结束符) 则函数返回false(假)。 |
getline函数的作用是从输入流中读取一行字符,其用法与带3个参数的get函数类似。即
cin.getline(字符数组(或字符指针), 字符个数n, 终止标志字符)
peek()用于观测下一个字符。其调用形式为c=cin.peek()
只是观测,指针不会向后移。如果观测到的是文件结束符,那么返回EOF(-1)
putback()作用是将,ch返回到输入流,插入到当前指针的位置,以供后面读取。
ignore()是跳过输入流中的的n个字符,或在指定的终止符时,提前结束
(提过终止符在内的若干个字符)
调用形式:
ignore(int n, char ch);
ignore()默认n=1, ch =EOF;