如果有需要请关注下面微信公众号,会有更多收获!

´在头文件iostream中定义有两个流类:输入流类istream和输出流类ostream,且用这两个类定义了流对象cin和cout:

´Istream cin;

´ostream cout;

´cin是一个istream类的对象,它从标准输入设备(键盘)获取数据,程序中的变量通过流提取符“>>”从流中提取数据。流提取符“>>”从流中提取数据时通常跳过输人流中的空格、tab键、换行符等空白字符。注意:只有在输入完数据再按回车键后,该行数据才被送入键盘缓冲区,形成输入流,提取运算符“>>”才能从中提取数据。注意保证从流中读取数据能正常进行。

´cout是一个ostream类的对象,它有一个成员运算函数operator<<,每次调用的时候就会向输出设备输出。operator用运算符重载,可以接受不同类型的数据,如整型、浮点型、字符串甚至指针,等等。cout是标准输出设备,一般输出到屏幕。

在定义流对象时,系统会在内存中开辟一段缓冲区,用来暂存输入输出流的数据

C++的iostream与C的printf/scanf的区别

´1. 类型处理更安全、智能,printf中对付int、float等说明符比较麻烦

´2. 扩展性更强,iostream使用的<<、>>操作符都是可重载,只要重载相关的运算符就可以;

´ 3. 流风格的写法也比较自然简洁

´4. printf/scanf的速度比cin/cout快

几个输入函数介绍:

´1、cin.get()

´ cin.get(字符变量名)可以用来接收字符

´cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格
2、cin.getline(接收字符串的变量,接收字符个数,结束字符)用法:接收一个字符串,可以接收空格并输出

3、getline()用法:接收一个字符串,可以接收空格并输出,需包含“#include<string>”

´注意:cin.getline()属于istream流,而getline()属于string流,是不一样的两个函

文件I/O也称为读文件(输入)和写文件(输出),c++标准库中提供两个类ifstream和ofstream,分别用于文件的输入和输出。

一.文件的写操作:

写操作对应的有:<<、put、write 等,我们来看下他们分别都能实现什么样的写文件功能!

①、写文本类型/ASCII码类型的可见字符串:<<、put

int main(){short var = 20000;ofstream fs;fs.open("1.txt");if (!fs) return 0;fs << var << endl;fs << "文件写入" << endl;fs.put('Y');fs.close();return 0;}

这就是写文本文件的方式,其中 << 支持的类型比较多,put 只能写单个字符到文件,还是有一定局限性的,所以 put 平时用的比较少

参考网站:http://www.cplusplus.com/reference/ostream/ostream/operator%3C%3C/

C/C++重定向 标准输入输出的库函数

´所谓重定向输出,就是可以把原本只是输出在控制台的字符,输出到你指定的路径文件中。(输入类似,就是从指定的文件中读取,而不是读取在控制台中的输入。)重定向函数可以在任何时候开启、关闭。

´函数名:freopen

´标准声明:FILE *freopen( const char *path, const char *mode, FILE *stream );

´所在文件: <stdio.h>

参数说明: path: 文件名,用于存储输入输出的自定义文件名。 mode: 文件打开的模式。和fopen中的模式(如r读, w写)相同。 stream: 一个文件,通常使用标准流文件。 返回值:成功,则返回一个path所指定文件的指针;失败,返回NULL。功能:实现重定向,把预定义的标准流文件定向到由path指定的文件中。标准流文件具体是指stdin、stdout和stderr。其中stdin是标准输入流,默认为键盘;stdout是标准输出流,默认为屏幕;stderr是标准错误流,一般把屏幕设为默认

输入一个正整数n(n<100,n从文件in.txt读入),求n的阶乘(答案写入文件out.txt)。

//c++语法
#include<iostream>
#include<stdio.h>
using namespace std;
int fac(int n){return (n==1)? 1:n*fac(n-1);
}
int main(){int n,m;freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取 freopen("out.txt","w",stdout); //输出重定向,输出数据将保存out.txt文件中 while(cin>>n){//m=fac(n);cout<<"输入n的阶乘为:"<<fac(n)<<endl; // 注意使用endl }fclose(stdin);//关闭重定向输入fclose(stdout);//关闭重定向输出 return 0;
}
//c语法
#include<stdio.h>
int fac(int n){return (n==1)? 1:n*fac(n-1);
}
int main(){int n,m;freopen("in2.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取 freopen("out2.txt","w",stdout); //输出重定向,输出数据将保存out.txt文件中 while(scanf("%d %d",&n,&m)!=EOF){printf("n的阶乘为:%d\n",fac(n)); }     fclose(stdin);//关闭重定向输入fclose(stdout);//关闭重定向输出 return 0;
}
getline()该函数是从文件中读取一行数据,一行就是有换行符 \n,或者达到 getline 的缓冲区大小,或者读到文件末尾。
#include <fstream>
using namespace std;
int main(int argc, char* argv[]){short var = 20000;ofstream fs_out;fs_out.open("d:\\123.txt");if (!fs_out) return 0;fs_out << var << endl;fs_out << var + 1 << endl;fs_out << var + 2 << endl;fs_out.close();ifstream fs_in;fs_in.open("d:\\123.txt");if (!fs_in) return 0;char sz[100] = { 0 };//缓存区fs_in.getline(sz, 100);fs_in.getline(sz, 100);fs_in.getline(sz, 100);fs_in.close();return 0;
}
//②、二进制类型写文件:write
int main(){short var = 20000;ofstream fs;fs.open("3.txt");if (!fs) return 0;fs.write((char*)&var, sizeof(var));fs.close();return 0;
}//①、读文本类型/ASCII码类型的文件:>>、get、getline
int main(){short var = 20000;ofstream fs_out;fs_out.open("4.txt");if (!fs_out) return 0;fs_out << var << endl;fs_out.close();var = 3000;ifstream fs_in;fs_in.open("4.txt");if (!fs_in) return 0;fs_in >> var;char ch = fs_in.get();fs_in.close();return 0;
}

闲鱼算法书PDF:有需要的同学可以看看:

C/C++文件输入输出(详细介绍)相关推荐

  1. wince中BIB文件的详细介绍

    wince中BIB文件的详细介绍 在WinCE中使用的一个重要的文件就是BIB文件,全称Binary Image Builder File.在WinCE的编译过程中会用到BIB文件,应该是在最后的Ma ...

  2. python代码文件方式_关于.py文件的详细介绍

    这篇文章主要给大家介绍了在Python中.py文件打包成exe可执行文件的相关资料,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧.前言最近做了几个简单的爬虫pytho ...

  3. Mac 系统中各个文件夹详细介绍

    Mac 系统中各个文件夹详细介绍 Mac OS X 系统以Unix作为核心,根目录为 / 打开Macintosh HD你会发现内中有四个文件夹分别为:应用程序(Applications).系统(Sys ...

  4. Android --- AndroidManifest.xml文件内容详细介绍

    文章目录 1.android:label="@string/app_name" 2. android:icon="@mipmap/ic_launcher"与an ...

  5. Ubuntu下各文件夹详细介绍

    Ubuntu的根目录下存在着很多的文件夹,但你知道他们都存放着哪些文件呢?这些是深入了解Ubuntu系统必不缺少的知识,本文就关于此做一下介绍吧. 转自http://blog.csdn.net/u01 ...

  6. 加载oracle属性文件,关于属性文件的详细介绍

    我们通常会将Java应用的配置参数保存在属性文件中,Java应用的属性文件可以是一个正常的基于key-value对,以properties为扩展名的文件,也可以是XML文件. 在本案例中,將会向大家介 ...

  7. python文件的用法_关于.py文件的详细介绍

    这篇文章主要给大家介绍了在Python中.py文件打包成exe可执行文件的相关资料,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧.前言最近做了几个简单的爬虫pytho ...

  8. Android 文件件详细介绍

    目录列表详细对照表:1..android_secure 是官方app2sd的产物,删了之后装到sd卡中的软件就无法使用了.2..Bluetooth 顾名思义,用蓝牙之后就会有这个.3..mobo 顾名 ...

  9. java文件读写详细介绍_java文件读写操作大全

    一.获得控制台用户输入的信息public String getInputMessage() throws IOException...{ System.out.println("请输入您的命 ...

  10. linux系统文件系统个目录介绍,关于linux的文件系统目录详细介绍

    首先我们回答一下最为宽泛的问题,什么是文件系统? 文件系统是对一个存储设备上的数据和元数据进行组织的机制.liuux的文件系统体系结构是一个对复杂系统进行抽象化的有趣例子,通过使用一组通用的API函数 ...

最新文章

  1. linux automake 卸载,linux下open-vswitch安装卸载操作
  2. iOS9 Search API 之 Spotlight
  3. Roman to Integer
  4. [BOI2019][第K大问题][暴力剪枝]D2T1 Olympiads
  5. python多线程爬取_python 多线程方法爬取微信公众号文章
  6. 2_6 CompositeMode.cpp 组合模式
  7. nginx 实用配置问题总结
  8. linux awk 时间范围,linux下使用awk命令按时间段筛选日志
  9. php$this-conn可以不先定义吗,CodeIgniter 是不是支持PDO 查询?还是本来就不支持
  10. 一个java 验证码的实现提供多种的实现
  11. Python中一定要注意的那些“坑”(三)
  12. 实操Tiktok一个月告诉你,10万粉丝轻松拿下?
  13. .NET程序员应掌握的常用类库
  14. pbcmc包的介绍(根据生信技能树Jimmy老师分享的乳腺癌分子分型包资料整理)
  15. 超级搜索术-朱丹-全部笔记整理
  16. ectouch 常用功能
  17. 12306车站信息爬取(1)——实现站点所有信息的查询
  18. 代码优化和内存屏障(barrier、mb、rmb、wmb)
  19. Unity Json存档读档操作
  20. 2021中国开源年会无锡城市分会场开源点亮无锡

热门文章

  1. 爆料!华为胡玲或入职头条,职场人该如何说“真话”?
  2. GP2Y10粉尘传感器
  3. wi-fi和路由器怎么连接_解决Wi-Fi问题的最简单方法:严重移动路由器
  4. 静态网页如何上传附件
  5. The Rust Programming Language - 第13章 Rust语言中的函数式语言功能:迭代器与闭包 - 13.1 可以捕获其环境的匿名函数
  6. 中国海上风电装备行业经济效益评价与投资战略规划展望报告2022-2028年版
  7. PyTorch图神经网络实践(五)链路预测
  8. 三言|格局决定结局 态度决定高度
  9. NDIS开发[网络驱动开发] NDIS开发1
  10. linux中解压rar文件处理