cin使用注意几点:
1. cin可以忽略 有效输入 之前 的分隔符(空格、制表符\t、换行符\n)
举例说明:
char ch = ‘a’;
std::cin >> ch ;
std::cout << ch << '\n';
当从键盘 输入 [enter] [enter] [enter]z 即 输入 回车、空格、回车、制表符\t、回车、字符z
这些分隔符也会存储在输入缓冲区中,回车键以 换行字符 ‘\n’ 存储,空格键 以 空格字符 ‘ ’ 存储,tab键 以 制表符 ‘\t’ 存储
cin从输入缓冲区读取字符时,此时输入缓冲区中存储的分别是 换行符(‘\n’)、空格(' ')、换行符(‘\n’)、制表符('\t')、
换行符(‘\n’)、字符z
读取过程: cin在读取输入缓冲区时,第一个遇到 换行符,cin 忽略并删除 缓冲区中的第一个换行符;然后继续读取第二个
字符,此时字符为空格字符,cin 也忽略并删除缓冲区中的第二个字符(空格字符);继续读取第三个字符(换行符),cin
忽略并删除 输入缓冲区中的换行符;继续读取第4个字符(制表符),cin 忽略并删除 制表符;继续读取第5个字符(换行符)
,忽略并删除 换行符;继续读取第6个字符(字符z),将字符z存入字符变量ch中。
输出:cin可以忽略有效输入 z 之前的那些分隔符,最终 ch 的值为z,程序最终输出 z
理解重点:
1. cin读取过程中, 若缓冲区中的第一个字符为分隔符,则可以忽略并删除 输入缓冲区中的 分隔符(空字符、换行符、制表 符);
2. 若缓冲区为空,cin会阻塞等待数据到来;
3. 若从键盘输入一个字符串 hello ,只有按下回车后,字符串才会被送入输入缓冲区,此时,输入缓冲区中 实际上有6个字 符,而不是5个字符,最后一个回车会转化为 换行符(‘\n’)存储在输入缓冲区中;
注意:cin 只是忽略 分隔符,但实际读取输入缓冲区中是存在分隔符的。
2. cin>> 连续输入