我们来看看最场景的任务:逐字符的读取文件或键盘。接下来将介绍 cin 支持的3种模式。

5.5.1 使用原始的 cin 进行输入

如果读取键盘输入,选择哨兵字符(sentinel character)作为停止标记。如,遇到 # 字符停止输入。

  1. int main()
  2. {
  3. char ch;
  4. int count = 0;
  5. cout << "输入字符,键入# 退出:" << endl;
  6. cin >> char;
  7. while (ch != '#') {
  8. cout << ch;
  9. ++count;
  10. cin >> ch;
  11. }
  12. cout << endl << count;
  13. return 0;
  14. }

按下回车后才会处理。

5.5.2 使用 cin.get(char) 进行补救

  1. int main()
  2. {
  3. char ch;
  4. int count = 0;
  5. cout << "输入字符,键入# 退出:" << endl;
  6. cin.get(ch);
  7. while (ch != '#') {
  8. cout << ch;
  9. ++count;
  10. cin.get(ch);
  11. }
  12. cout << endl << count;
  13. return 0;
  14. }

5.5.3 使用哪一个 cin.get()

cin.get() 的一个版本接收两个参数:数组名和 ArSize。接下来使用不接受参数的 cin.get()。C++ 支持函数重载,是利用了 OOP 特性。