while (cin >> a >> b)的逻辑:“一直读,读到没数据为止”

你现在看到的代码:

int a, b;
while (cin >> a >> b) {
    // 处理 a 和 b
}

C++ 中最常见的“未知数据量”输入写法,尤其在在线评测系统里非常普遍。


🔍 逐句拆解

语句部分 作用
int a, b; 定义两个整数变量,用来存放每次读入的两个数。
cin >> a >> b 从标准输入读取两个整数,依次存入 ab
while (cin >> a >> b) 只要读入成功,就继续循环;读失败(如 EOF)就停止

🚩 什么时候读失败?

情况 举例 结果
读到文件末尾(EOF) Ctrl+D(Linux/macOS)或 Ctrl+Z(Windows) 循环结束
类型不匹配 输入 abc 而变量是 int 循环结束
只读到一半 输入只有一个数而需要两个 循环结束

🧪 举个例子

输入(终端):

1 2
3 4
5 6
[Ctrl+D]

代码:

#include <iostream>
using namespace std;

int main() {
    int a, b;
    while (cin >> a >> b) {
        cout << a + b << '\n';
    }
    return 0;
}

输出:

3
7
11

✅ 使用场景总结

场景 是否适用
多组数据,组数未知 ✅ 强烈推荐
多组数据,第一行给组数 T ❌ 应该用 for (int i = 0; i < T; ++i)
手动调试 ✅ 方便
在线评测系统 ✅ 最常见的写法

一句话记住:

while (cin >> a >> b) 就是 “一直读,读到没数据为止” 的万能循环输入模板!

posted @ 2025-07-13 21:07  mdyyyds_blog  阅读(338)  评论(0)    收藏  举报