c++中输入cin
系统的输入都有一个缓冲区,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin对象直接从输入缓冲区中读取数据。正因为cin对象是直接从缓冲区取数据的,所以有时候当缓冲区有残留数据的时候,cin对象会直接取得这些残留数据而不会请求键盘输入。
1. cin>>
- 当 cin>> 从缓冲区中读取数据的时候,若缓冲区中第一个字符是空格、tab或者换行这些分隔符时,cin>> 会将其忽略并清除,继续取下一个字符,若缓冲区为空,则继续等待。但是如果读取成功,字符后面的分隔符是残留在缓冲区的。 cin>> 不做处理。
- 如果不想略过空白字符,可以使用 nosklpws 流控制。比如 cin >> noskipws >> a;
- getline(cin, str); getline 读取数据的时候,不会忽略输入缓冲区中换行、tab 等