C++读取一行内个数不定的整数的方式

简介: C++读取一行内个数不定的整数的方式

应用情况


我们在编程的时候,有时候会遇到这样的情况:输入的数据个数不定,比如一行之内可能有两个数据,也可能有三个数据,一行内数据用空格字符分割。应该怎么处理这样的输入呢?


我们可以这样写。


源码


#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
using namespace std;
using gg = long long;
int main()
{
  gg a, b, c;
  gg i;
  for (i = 0; i < 3; i++)
  {
  cin >> a >> b;//先输入两个数据
  if (cin.get() == '\n' || cin.eof())//判断有没有第三个数据
  {
    cout << "(a,b) = (" << a << "," << b << ") \n";
  }
  else
  {
    cin >> c;//如果有第三个数据,就输入
    cout << "(a,b,c)=(" << a << ',' << b << ',' << c << ") \n";
  }
  }
  return 0;
}


运行结果



93445a56f6c8c1ef88620273e814ede9_cc24c166b3e14733a167ec5604e6053c.png


思路解释


(cin.get() == '\n' || cin.eof())的条件最为关键,其中“cin.get() == '\n'”是用来判断两个整数后面的字符是否是换行符,“cin.eof()”是用来判断是否到达文件末尾。


如果两个条件之中至少满足一个,那么就说明要读取的只有两个整数。


如果都不满足,则说明有第三个数据要读取。走else,输入第三个整数。


易错点


需要注意的是,如果要使用这个代码来判断,需要保证题目输入数据中每行最后那个数据后面紧跟换行符,而不能跟着空格之类的。


相关文章
|
6月前
|
算法 测试技术 C#
【数位dp】【C++算法】600. 不含连续1的非负整数
【数位dp】【C++算法】600. 不含连续1的非负整数
|
6月前
|
C语言 C++
【C++之数组与指针1】随机输入整数存入数组并用指针遍历
【C++之数组与指针1】随机输入整数存入数组并用指针遍历
|
6月前
|
C++
c++:string相关的oj题(把字符串转换成整数、344.反转字符串、387. 字符串中的第一个唯一字符、917. 仅仅反转字母)
c++:string相关的oj题(把字符串转换成整数、344.反转字符串、387. 字符串中的第一个唯一字符、917. 仅仅反转字母)
80 0
|
1月前
|
人工智能 C++
第十四届蓝桥杯省赛大学B组(C/C++)整数删除
第十四届蓝桥杯省赛大学B组(C/C++)整数删除
|
3月前
|
C++
C++产生N以内的随机整数
C++产生N以内的随机整数
19 0
|
6月前
|
存储 C++
C/C++中的整数除法运算与汇编指令DIV和IDIV
C/C++中的整数除法运算与汇编指令DIV和IDIV
172 1
|
6月前
|
C++
41.用c++编写程序:从键盘上任意输20个1-99之间的整数,分别统计其个位数0-9的数字各有多少
41.用c++编写程序:从键盘上任意输20个1-99之间的整数,分别统计其个位数0-9的数字各有多少
52 0
|
6月前
|
存储 安全 程序员
C/C++中的整数乘法运算与汇编指令MUL和IMUL
C/C++中的整数乘法运算与汇编指令MUL和IMUL
137 0
|
6月前
|
算法 测试技术 C++
【数论】【分类讨论】【C++算法】1611使整数变为 0 的最少操作次数
【数论】【分类讨论】【C++算法】1611使整数变为 0 的最少操作次数
|
6月前
|
算法 测试技术 C++
【数位dp】【C++算法】600. 不含连续1的非负整数
【数位dp】【C++算法】600. 不含连续1的非负整数