news 2026/4/16 2:04:55

c/c++ 常见输入输出函数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
c/c++ 常见输入输出函数

参考文章:
C++标准输入cin详解-CSDN博客
https://blog.csdn.net/bravedence/article/details/77282039
c++里面的函数
区分cin,cin.get,cin.getline,getline()

cin:从标准输入中读取数据
cin会跳过空白字符,以空格,换行符,tab键作为分割符。

会将分割符保留在缓冲区中。若缓冲区的第一个字符是空白字符则会跳过并清除,

cin.get
int cin.get(); //返回读入字符的ascii

istream& cin.get(char& var); //注意返回值是istream,可以链式读取

istream& get ( char* s, streamsize n ); //遇到换行符时结束读取,不对换行符进行处理,换行符仍然残留在输入缓冲区

istream& get ( char* s, streamsize n, char delim )。 //允许自定义终止符,遇到终止符停止读取,终止符保留在缓冲区中

读取的字符数最多为n-1,假设读取len个字符,会在len+1位置赋值为'0'

注意:这里的二个参数 需要传递数组的长度

如果不太理解可以看这个代码 实际上只会读取一个字符,下标为1的位置自动设置为‘0’

#include<iostream>
using namespace std;
int main(){
char id[14];
cin.getline(id, 2);
return 0;
}
一键获取完整项目代码
cpp
cin.getline
和cin.get类似 区别是将终止符自动清理,不会将终止符留在缓冲区中

------------
前面的都是c风格的读取,getline是c++风格的字符串读取

getline
需要包含string头文件

遇到终止符停止读取,会将终止符清理掉

istream& getline ( istream& is, string& str);//默认以换行符结束

istream& getline ( istream& is, string& str, char delim);

需要指定输入流(可以是文件流),输出流

这里提一下:cout直接打印数组名,会输出首地址。而直接打印字符数组名,会输出整个字符。(前提是必须要字符0结束标志)

原因:

数组名在大多数表达式中会自动退化为指针。cout 会把它当作「地址指针」打印出来

但对于字符指针:

C++ 的 operator<< 对 cout 有重载机制:

对 char* 类型,cout 调用的重载函数是:

ostream& operator<<(ostream& os, const char* s);

它会把指针当作一个 C 字符串,从该地址开始打印,直到遇到 '\0'。

C语言中的函数
C语言不可以直接指定分割符

getchar
int getchar(void) //读取单个字符,能够读取任意字符

没有参数,返回值是ascii码

fgetc/fputc
int fgetc(FILE *stream);

功能:从指定文件中读取一个字符数据,并以无符号整数的形式返回

参数1:文件指针

返回值:成功返回读取的字符对应的无符号整数,失败返回EOF并置位错误码

int fputc(int c, FILE *stream);
功能:将指定的字符c写入到stream指向的文件中

参数1:要写入的字符对应的无符号整数 参数2:文件指针

返回值:成功返回写入字符的无符号整数,失败返回EOF并置位错误码

fgets/fputs
int fputs(const char *s, FILE *stream);
功能:将指定的字符串,写入到指定的文件中
参数1:要被写入的字符串

参数2:文件指针

返回值:成功返回本次写入字符的个数,失败返回EOF

char *fgets(char *s, int size, FILE *stream);
功能:从stream指向的文件中最多读取size-1个字符到s容器中,遇到回车或文件结束,会结束一 次读取,并且会将回车放入容器,最后自动加上一个字符串结束标识'\0'

参数1:字符数组容器起始地址

参数2:要读取的字符个数,最多读取size-1个字符

参数3:文件指针

返回值:成功返回容器s的起始地址,失败返回NULL

ps:c语言中没有get函数,也没有fget函数———————————————
版权声明:本文为CSDN博主「灯在哪里」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dragon_time/article/details/154171722

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 10:53:35

大模型Agent开发全攻略:架构、记忆、规划与工具设计!

Agent的概念和研究课题 挺尴尬的&#xff0c;在这3篇论文里&#xff0c;都没有用严谨而直白的话来定义何为Agent&#xff0c;什么样的一个系统或者模式&#xff0c;能被称为Agent&#xff0c;而是很直接地开始去讲Agent这一个话题&#xff0c;包括他有关的研究工作。 通过这几…

作者头像 李华
网站建设 2026/4/16 10:54:25

GitHub Star数破万的PyTorch项目都用了哪些环境配置?

GitHub Star数破万的PyTorch项目都用了哪些环境配置&#xff1f; 在如今深度学习项目动辄上千依赖、环境配置“一步出错全盘崩溃”的背景下&#xff0c;你是否曾遇到过这样的场景&#xff1a;从GitHub克隆了一个高Star的PyTorch项目&#xff0c;兴冲冲地准备复现实验结果&#…

作者头像 李华
网站建设 2026/4/16 13:56:21

外文文献检索网站使用指南:高效查找与获取专业学术资源的方法

生成式人工智能的浪潮正引发各领域的颠覆性变革&#xff0c;在学术研究这一知识生产的前沿阵地&#xff0c;其影响尤为显著。文献检索作为科研工作的基石&#xff0c;在AI技术的赋能下各大学术数据库已实现智能化升级。小编特别策划"AI科研导航"系列专题&#xff0c;…

作者头像 李华
网站建设 2026/4/16 10:45:05

【开题答辩全过程】以 小区物业管理APP为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华
网站建设 2026/4/16 9:01:38

四驱系统冬季不同路况扭矩分配逻辑差异

四驱系统的核心价值在冬季复杂路况中被最大化激活&#xff0c;而其扭矩分配逻辑会随路面附着力动态调整&#xff0c;冰面、积雪、融雪泥泞路的差异尤为显著。首先看冰面路况&#xff0c;由于路面附着力极低且均匀性差&#xff0c;四驱系统会以“防滑优先”为核心逻辑&#xff0…

作者头像 李华