news 2026/5/17 3:18:15

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/5/12 8:11:47

WSL2中无法注册分发?直接使用云端PyTorch镜像

WSL2中无法注册分发&#xff1f;直接使用云端PyTorch镜像 在深度学习开发的日常中&#xff0c;你是否曾遇到这样的场景&#xff1a;满怀信心地打开 WSL2&#xff0c;准备跑一个 PyTorch 模型&#xff0c;结果 torch.cuda.is_available() 返回了令人绝望的 False&#xff1f;或者…

作者头像 李华
网站建设 2026/5/16 1:34:48

手把手教你构建多代理AI系统:MCP+A2A+LangGraph实战!

引言 在 AI Agent 开发领域&#xff0c;MCP&#xff08;Model Context Protocol&#xff0c;模型上下文协议&#xff09;用于标准化工具和资源的访问&#xff0c;让 LLM 能无缝调用外部数据源&#xff1b;A2A&#xff08;Agent2Agent&#xff0c;代理间协议&#xff09;则实现代…

作者头像 李华
网站建设 2026/5/14 21:07:20

Markdown格式撰写技术博客:结合PyTorch实验结果展示

PyTorch-CUDA-v2.7 镜像&#xff1a;重塑深度学习开发效率的实践之路 在当今 AI 研发节奏以“周”甚至“天”为单位迭代的背景下&#xff0c;一个常见的尴尬场景是&#xff1a;团队花了三天时间终于跑通了论文复现代码&#xff0c;结果发现模型训练不起来——不是因为算法有问题…

作者头像 李华
网站建设 2026/5/8 10:38:24

按Token计费的大模型API如何与PyTorch本地训练衔接

按Token计费的大模型API如何与PyTorch本地训练衔接 在AI工程落地的现实中&#xff0c;我们常常面临一个两难&#xff1a;一边是功能强大但按Token计费、长期使用成本高昂的云端大模型API&#xff0c;另一边是需要大量标注数据、训练周期长但推理廉价可控的本地模型。理想的情况…

作者头像 李华