cin 输入机制讲解

原理简介

  • cin >> var:跳过空白,读取下一个非空内容。
  • getline(cin, str):读取整行,包含空格,直到 \n

输入示例

用户输入内容:

42 hello world

输入缓冲区示意图

位置123456789101112131415
字符42空格hello空格world\\n(换行)

示例1:使用 cin >>

int num;
string word;
cin >> num >> word;
  • num = 42
  • word = "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);