cin,cin.get()等异同点[面试题系列]

函数原型

  1. cin
  2. cin.get(void);cin.get(char&);cin.get(char *,int n);cin.get(char*,int n,char)
  3. getchar() = cin.get(void)
  4. cin.getline(char*,int n);cin.getline(char*,int n,char)
  5. getline(cin,string& line)

cin

  1. cin永远会跳过空白(空格、tab、enter)
  2. cin在遇到第一个类型不匹配的字符时会停止读取。对于int等类型的容器,cin的这个特性是更鲜明的。对于char等类型(char string vector<char>等),不存在类型不匹配的字符,因此只会按照第一点的原则,即使遇到空白时停止。因此空白更像是一种数据分割标志,而非数据本身。
  3. cin在遇到文件结尾时会设置eofbit,可使用cin.eof()查看;在没有成功取到数据时,会设置failbitt,可使用cin.fail()查看。
  4. 会返回输入流引用cin

cin.get(void)

  1. 从输入流取一个数据,并返回这个数据,而不是输入流引用cin

cin.get(char&)

  1. 从输入流取一个数据赋值给char
  2. 在遇到文件结尾时会设置eofbit,可使用cin.eof()查看;在没有成功取到数据时,会设置failbitt,可使用cin.fail()查看。
  3. 会返回输入流引用cin

cin.get(char*,int n)

  1. 从输入流中取数据,放入char*位置。
  2. 取完n-1个字符停止,最后一个字符补'\0'
  3. 遇到换行符也结束,换行符留在输入流中
  4. 在遇到文件结尾时会设置eofbit,可使用cin.eof()查看;在没有成功取到数据时,会设置failbitt,可使用cin.fail()查看。
  5. 会返回输入流引用cin

cin.get(char *,int n,char)

  1. 从输入流中取数据,放入char*位置。
  2. 取完n-1个字符停止,最后一个字符补'\0'
  3. 遇到char指定的字符也结束,该字符留在输入流中
  4. 在遇到文件结尾时会设置eofbit,可使用cin.eof()查看;在没有成功取到数据时,会设置failbitt,可使用cin.fail()查看。
  5. 会返回输入流引用cin

cin.getline(char*,int n)

  1. 从输入流中取数据,放入char*位置。
  2. 取完n-1个字符停止,最后一个字符补'\0'
  3. 遇到换行符也结束,换行符被丢弃
  4. 在遇到文件结尾时会设置eofbit,可使用cin.eof()查看;在没有成功取到数据时,会设置failbitt,可使用cin.fail()查看。
  5. 会返回输入流引用cin

cin.getline(char*,int n,char)

  1. 从输入流中取数据,放入char*位置。
  2. 取完n-1个字符停止,最后一个字符补'\0'
  3. 遇到char指定的字符也结束,该字符被丢弃
  4. 在遇到文件结尾时会设置eofbit,可使用cin.eof()查看;在没有成功取到数据时,会设置failbitt,可使用cin.fail()查看。
  5. 会返回输入流引用cin

getline(cin,string& line)

  1. 从输入流中取数据,放在line中
  2. 遇到换行符结束,换行符被丢弃
  3. 在遇到文件结尾时会设置eofbit,可使用cin.eof()查看;在没有成功取到数据时,会设置failbitt,可使用cin.fail()查看。
  4. 会返回输入流引用cin

相同点

  1. 除了cin.get(void),在遇到文件结尾时会设置eofbit,可使用cin.eof()查看;在没有成功取到数据时,会设置failbitt,可使用cin.fail()查看。
  2. 会返回输入流引用cin

区别

  1. cin.get(void)、cin.get(char&)用于取单个字符
  2. cin.get(char*,int n)、cin.getline(char*,int n)用于取整行字符串
  3. getline(cin,string& line)在<string>头文件中,可动态增容
相关推荐
在未来等你11 小时前
Elasticsearch面试精讲 Day 20:集群监控与性能评估
大数据·分布式·elasticsearch·搜索引擎·面试
LeaderSheepH11 小时前
常见的排序算法
数据结构·算法·排序算法
毕设源码-郭学长11 小时前
【开题答辩全过程】以 J2EE在电信行业的应用研究为例,包含答辩的问题和答案
java·java-ee
Aevget11 小时前
「Java EE开发指南」如何用MyEclipse开发Java EE企业应用程序?(二)
java·ide·java-ee·开发·myeclipse
不爱编程的小九九11 小时前
小九源码-springboot048-基于spring boot心理健康服务系统
java·spring boot·后端
龙茶清欢11 小时前
Spring Boot 应用启动组件加载顺序与优先级详解
java·spring boot·后端·微服务
青云交11 小时前
Java 大视界 -- Java 大数据在智能公交调度优化与准点率提升中的应用实践(416)
java·动态规划·flink cep·spark mllib·智能公交调度·杭州公交案例·准点率提升
RainbowSea11 小时前
4. ChatClient 的初始,快速使用上手
java·spring·ai编程
RainbowSea11 小时前
3. Ollama 安装,流式输出,多模态,思考模型
java·spring·ai编程
周杰伦_Jay12 小时前
【图文详解】强化学习核心框架、数学基础、分类、应用场景
人工智能·科技·算法·机器学习·计算机视觉·分类·数据挖掘