cin 输入机制讲解
原理简介
cin >> var:跳过空白,读取下一个非空内容。getline(cin, str):读取整行,包含空格,直到\n。
输入示例
用户输入内容:
42 hello world
输入缓冲区示意图
| 位置 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字符 | 4 | 2 | 空格 | h | e | l | l | o | 空格 | w | o | r | l | d | \\n(换行) |
示例1:使用 cin >>
int num;
string word;
cin >> num >> word;num = 42word = "hello"
示例2:使用 getline
string line;
getline(cin, line);line = "42 hello world"
注意:cin 和 getline 连用问题
int a;
string s;
cin >> a;
getline(cin, s); // 可能读取空行解决方法:
cin >> a;
cin.ignore(); // 跳过换行符,丢弃一个字符
getline(cin, s);