当前位置: 首页 > ds >正文

输入数量未知如何设置输入

在 C++ 的算法题中,如果你不知道输入数据有多少组(即测试用例的数量未知),通常的处理方式是使用 循环读取输入直到文件结束 (EOF)。这类题目常见于在线评测系统(如 LeetCode、牛客网、POJ 等)。


✅ 常见方法:使用 while (cin >> 变量)while (getline(cin, str))

📌 方法 1:适用于每组输入有固定变量的情况

#include <iostream>using namespace std;int main() {int a, b;while (cin >> a >> b) {// 处理每一组输入cout << a + b << endl;}return 0;}
  • 这种写法会持续读取输入,直到没有更多输入为止(遇到 EOF 结束循环)。
  • 常用于像“多组输入求 a + b”这种题目。

📌 方法 2:按整行读取(适合复杂格式或含空格的输入)

#include <iostream>#include <sstream>using namespace std;int main() {string line;while (getline(cin, line)) {// 每一行 line 是一组输入istringstream iss(line);int a, b;if (iss >> a >> b) {cout << a + b << endl;}}return 0;}
  • 使用 getline(cin, line) 来逐行读取;
  • 再使用 istringstream 解析每一行的数据;
  • 更灵活,适合输入格式较复杂的题目。

📌 方法 3:读入多个数字的一组数据(比如每组输入是一行多个数)

#include <iostream>#include <vector>using namespace std;int main() {string line;while (getline(cin, line)) {istringstream iss(line);int num;vector<int> nums;while (iss >> num) {nums.push_back(num);}// 处理这一组数据,例如求和int sum = 0;for (int x : nums) sum += x;cout << sum << endl;}return 0;}

 小结

场景

推荐写法

每组输入几个固定变量(如 a 和 b)

while (cin >> a >> b)

输入可能包含空格或一整行

while (getline(cin, line))

每组输入有多个不确定数量的数字

istringstream配合getline


 补充说明

  • 在本地调试时,可以通过输入重定向或手动输入后按下 Ctrl+Z(Windows)或 Ctrl+D(Linux/macOS)来模拟 EOF。
  • 在 OJ 平台上,程序会自动从标准输入读取数据,直到输入结束。
http://www.xdnf.cn/news/14664.html

相关文章:

  • 安装 WSL2 与设置​
  • 函数重载与函数模板
  • 电阻篇---上拉电阻
  • JavaScript 精度问题深度解析
  • LeetCode--30.串联所有单词的子串
  • LLM4rec-rednote
  • YOLOv4 训练与推理流程详解
  • 105. Java 继承 - 静态方法的隐藏
  • 工作中使用到的单词(软件开发)_第四版
  • 修改了xml布局代码,页面使用了databinding,此时不开启kapt也可以吗
  • firewalld防火墙(一):基础概念、配置详解与实战应用
  • PaddleOCR项目实战(3):SpringBoot服务开发之全局异常处理
  • 华为OD-2024年E卷-增强的strstr[100分] -- python
  • OC-UI学习-Auto Layout使用
  • 自主学习-《Absolute Zero: Reinforced Self-play Reasoning with Zero Data》
  • 《贵州安顺棒垒球》国家队运动员·棒球1号位
  • 器件(九)—对设计的模块进行双脉冲仿真
  • 【系统分析师】2011年真题:案例分析-答案及详解
  • 阿里云OSS任意文件写入/删除漏洞修复方案
  • LDPC码的译码算法
  • 一个包含两款主题的社交APP客户端UI解决方案
  • houdini 简单流体模拟 学习笔记
  • OpenKylin安装dotnet及其永久环境配置
  • Redis windows版安装,启动配置【kaki学习备忘录】
  • 基于RSSI的室内定位的排列不变Transformer神经架构
  • 如何在 Elementary OS 上安装 Cinnamon 桌面环境
  • HTTP协议简易入门
  • Spring AOP
  • csv文档批量转换xlsx,xls文档(带界面)
  • Go语言同步原语与数据竞争:数据竞争的检测工具