iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++中IO流操作实例分析
  • 813
分享到

C++中IO流操作实例分析

2023-07-02 14:07:26 813人浏览 泡泡鱼
摘要

这篇“c++中io流操作实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++中IO流操作实例分析”文章吧。1.标准输

这篇“c++io流操作实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++中IO流操作实例分析”文章吧。

1.标准输出输入流-控制台流(iOStream类) 

cin实际上是一个标准输入流对象(类对象),常用的方式有,cin>>(cin.operator>>()), cin.get(), cin.getline()(用法:cin.getline(char s[], int nLength))

或者在std命名空间下,有一个单独的getline()函数,但是该函数时使用string对象作为参数的,即:getline(cin, str)

cout是标准输出流对象(类对象),cout<<

cout cin printf scanf(格式化输入输出)比较

总结:c++中尽量用cin和cout

//c_str()就是把string类对象转换成和c兼容的char*类型。//这是为了与C语言兼容,在c语言中没有string类型//故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式//例如string a = "hellofjifj";printf("%s\n", a.c_str());//printf("%s\n", a);//这样会有问题

2. 文件流(I/O操作)

在文件流中提供了三个派生类对文件数据进行操作(注意这里是类,不像控制台提供的是类对象)

  • ofstream:输出,即写文件,由ostream引申而来

  • ifstream:输入,即读取文件,由istream引申而来

  • fstream :输入输出,同时读写操作,由iostream引申而来

文件的类型:文本文件 和 二进制文件

文件读写的步骤:

  • 包含的头文件:#include <fstream>

  • 创建流

  • 打开文件(文件和流关联)

  • 读写 (写操作:<<,put( ),write( )读操作:>> , get( ),getline( ), read( ))

  • 关闭文件:把缓冲区数据完整地写入文件, 添加文件结束标志, 切断流对象和外部文件的连接

文本文件

使用<< >> 进行读写

<< 能实现以行为单位写入文件

>> 不能一行为单位读入内存,而是以单词为单位。总是以空格、Tab、回车结束

    ofstream OpenFile("file.txt");    if (OpenFile.fail())    {      cout<<"打开文件错误!"<<endl;      exit(0);    }      OpenFile << "abc def ghi";//把内容写入file文件    OpenFile.close();
    const int len=20;      char str[len];      ifstream OpenFile("file.txt");    if (OpenFile.fail())      {          cout<<"打开文件错误!"<<endl;          exit(0);      }      OpenFile >> str;      cout << str << endl;      OpenFile.close(); //str的内容为abc,而不是abc def ghi(见空格停止)
getline()读取一行

getline():以行为单位读入内存,能一次读入一行

函数原型:istream &getline( char *buffer, streamsize num );

getline( )函数用于从文件读取num个字符到buffer(内存)中,直到下列情况发生时,读取结束:

  • num个字符已经读入

  • 碰到一个换行标志

  • 碰到一个EOF

    const int len=20;      char str[len];      ifstream OpenFile("file.txt");      if (OpenFile.fail())      {          cout<<"打开文件错误!"<<endl;          exit(0);      }      OpenFile.getline(str,20);      cout << str << endl;      OpenFile.close();//运行结果:str的内容为abc def ghi (一直把一行读完)
get() put()进行单个字符读写

ostream& put (char c);

函数功能:使用 put( )函数,向文件中写入字符

    char ch='1';      ofstream OpenFile("file.txt");    if (OpenFile.fail())      {          cout<<"打开文件错误!"<<endl;          exit(0);      }      OpenFile.put(ch); // 把字符1写入文件    OpenFile.close();

istream& get (char& c);

函数功能:使用 get( )函数,从文件中读取字符

    char ch;      ifstream OpenFile("file.txt");    if (OpenFile.fail())      {          cout<<"打开文件错误!"<<endl;          exit(0);      }      OpenFile.get(ch);      cout << ch; //把字符1从文件中读到ch(内存)中    OpenFile.close();

二进制文件读写

get() put()进行单个字节读写

ofstream &put(char ch)

在内存中写入一个字节到文件

    char ch='a';      ofstream OpenFile("file.txt",ios::binary);      //以二进制的方式处理,在打开时要用 ios::binary 显式声明  if (OpenFile.fail())      {          cout<<"打开文件错误!"<<endl;          exit(0);      }      OpenFile.put(ch);      OpenFile.close();

ifstream &get(char ch)

在文件中读取一个字节到内存

    char ch;      ifstream OpenFile("file.txt",ios::binary);    if (OpenFile.fail())      {          cout<<"打开文件错误!"<<endl;          exit(0);      }      OpenFile.get(ch); // 从文件中读取一个字符    cout << ch;      OpenFile.close();
read() write()多个字节读写

ostream & ostream :: write ( char * buf , int n ) ;

功能:把buf指向的内容取n个字节写入文件

参数说明:buf表示要写入内存的地址,传参时要取地址。n表示要读入字节的长度

注意:

  • 该函数遇到空字符时并不停止,因而能够写入完整的类结构

  • 第一个参数一个char型指针(指向内存数据的起始地址),与对象结合使用的时候,要在对象地址之前要char做强制类型转换

    char ch[12]="12 3 456 78";      ofstream OpenFile("file.txt");    if (OpenFile.fail())      {          cout<<"打开文件错误!"<<endl;          exit(0);      }      OpenFile.write(ch, 12);      OpenFile.close();

istream & read ( char * buf , int n ) ;

功能:从文件中提取 n 个字节数据,写入buf指向的地方中

    char ch[12];      ifstream OpenFile("file.txt");      if (OpenFile.fail())      {          cout<<"打开文件错误!"<<endl;          exit(0);      }      OpenFile.read(ch,12);      cout << ch;  //运行结果:数组ch的内容为12 3 456 78    OpenFile.close();

注意事项

(1)程序不再使用文件时,为什么要关闭文件?

因为:

  • 文件缓冲区是一块小的内存空间.

  • 操作系统限制同时打开的文件数量

注意:close ( ) 函数关闭文件,但流对象仍然存在。

(2)文件的默认打开方式为文本文件,要是想以二进制的方式处理,在打开时要用 ios::binary 显式声明。

(3)针对文本文件操作时,get函数和>>的区别:

  • 在读取数据时,get函数包括空白字符(遇空白字符不停止读取)

  • >>在默认情况下拒绝接受空白字符(遇到空白符停止读取)

(4)文本文件的读写常使用的方法:使用<<写入文件,使用getline 和 >> 读到内存

二进制文件的读写常使用的方法:使用istream 类的成员函数read 和write 来实现,

3.字符串输入输出流(sstream)

其相应的派生类有istringstream类、ostringstream类、iostringstream类

sprintf sscanf 和 stringstream的使用

其实是整型和字符创类型的相互转化:序列化(转成字符串)和反序列化(将字符串中数据提取处理)

C当中用法:sprintf和sscanf函数

C++中用法:字符串流

struct ServerInfo//要读些的信息类{char _ip[20];int  _port;};//C当中用法    //将info中数据转成字符串并存入buff中ServerInfo info = { "192.0.0.1", 8000 };char buff[128];//buff的大小不好确定sprintf_s(buff, "%s %d", info._ip, info._port);// 序列化,转成字符串存入buff中    //将buff中数据格式化输出到rinfo中ServerInfo rinfo;sscanf(buff, "%s%d", rinfo._ip, &rinfo._port);// 反序列化,将字符串buff中数据转成规定格式//空格间隔开了
//C++用法//将info中数据转成字符串并存到buff中    ServerInfo info = { "192.0.0.1", 8000 };stringstream SSM;//字符串流对象ssm << info._ip <<" "<<info._port;//转成字符串string buff = ssm.str();//查看字符串//从字符串提取至rinfostringstream ssm;ssm.str("127.0.0.1 90");//这两行直接按照下面的写法也行//stringstream ssm("127.0.0.1 90");ServerInfo rinfo;ssm >> rinfo._ip >> rinfo._port;

补充内容:C/C++中int和字符串类型的转换

string转int
  • atoi(c库函数、ascll to integer)

  • strtol(c库函数,字符串转成长整型)

  • stoi(stoi是C++的函数,头文件:#include < string >)

int转string
  • itoa(c库函数)

  • to_string(C++11的函数,可以适应8种类型的重载,将其转换为string,头文件:#include < string >)

以上就是关于“C++中IO流操作实例分析”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网其他教程频道。

--结束END--

本文标题: C++中IO流操作实例分析

本文链接: https://www.lsjlt.com/news/342570.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++中IO流操作实例分析
    这篇“C++中IO流操作实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++中IO流操作实例分析”文章吧。1.标准输...
    99+
    2023-07-02
  • JAVA中IO操作的字节流和字符流实例分析
    这篇文章主要介绍了JAVA中IO操作的字节流和字符流实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JAVA中IO操作的字节流和字符流实例分析文章都会有所收获,下面我们一起来看看吧。IO操作字节流java...
    99+
    2023-06-29
  • Java中IO操作字节流与字符流的示例分析
    这篇文章主要为大家展示了“Java中IO操作字节流与字符流的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java中IO操作字节流与字符流的示例分析”这篇文章吧。IO操作字节流java....
    99+
    2023-06-29
  • .Net中常用的IO操作实例分析
    这篇文章主要介绍“.Net中常用的IO操作实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“.Net中常用的IO操作实例分析”文章能帮助大家解决问题。1. Stream.CopyToStream...
    99+
    2023-07-02
  • C++中文件操作实例分析
    这篇文章主要介绍“C++中文件操作实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++中文件操作实例分析”文章能帮助大家解决问题。文件操作意义:利用文件操作可以保存我们程序运行的信息,是持久...
    99+
    2023-07-02
  • Java中IO流的示例分析
    这篇文章主要为大家展示了“Java中IO流的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java中IO流的示例分析”这篇文章吧。I/O简介I/O是Input/output的缩写,在ja...
    99+
    2023-06-20
  • C#原子操作实例分析
    这篇文章主要讲解了“C#原子操作实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#原子操作实例分析”吧!知识点竞争条件当两个或两个以上的线程访问共享数据,并且尝试同时改变它时,就发生...
    99+
    2023-06-29
  • Java的File类和IO流实例分析
    本文小编为大家详细介绍“Java的File类和IO流实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java的File类和IO流实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。IO流:IO流概述:I...
    99+
    2023-06-29
  • C#操作Word应用实例分析
    本篇内容主要讲解“C#操作Word应用实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#操作Word应用实例分析”吧!C#操作Word实际应用实例:课程是关于电子病历的,内容就是用wor...
    99+
    2023-06-18
  • C#操作注册表实例分析
    这篇文章主要讲解了“C#操作注册表实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#操作注册表实例分析”吧!在下面的例子里,要注意:建项函数:CreateSubKey()建子键函数:...
    99+
    2023-06-18
  • C#中的Linq to JSON操作实例分析
    今天小编给大家分享一下C#中的Linq to JSON操作实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-06-30
  • C#操作Excel实现的实例分析
    C#操作Excel实现的实例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C#操作Excel是怎么样执行的呢?我们在实际的C#操作Excel开发程序过程中主要会使用到那些方...
    99+
    2023-06-17
  • Java IO中包装流的示例分析
    这篇文章主要介绍了Java IO中包装流的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。根据功能分为节点流和包装流(处理流)节点流:可以从或向一个特定的地方...
    99+
    2023-06-26
  • C++操作符举例分析
    本篇内容主要讲解“C++操作符举例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++操作符举例分析”吧!常用C++操作符操作符说明举例:算术运算符   &nb...
    99+
    2023-06-17
  • python中IO流和对象序列化实例分析
    这篇文章主要介绍了python中IO流和对象序列化实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python中IO流和对象序列化实例分析文章都会有所收获,下面我们一起来看看吧。一.IO流的操作(1).什...
    99+
    2023-06-29
  • JAVA的IO流、File、字节流及字符流实例分析
    今天小编给大家分享一下JAVA的IO流、File、字节流及字符流实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。IO简...
    99+
    2023-06-30
  • C语言文件操作实例分析
    这篇文章主要介绍了C语言文件操作实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言文件操作实例分析文章都会有所收获,下面我们一起来看看吧。一、为什么使用文件?当我们在编写一个项目的时候,自然而然想到要...
    99+
    2023-07-02
  • C++序列操作函数实例分析
    本文小编为大家详细介绍“C++序列操作函数实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++序列操作函数实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。前言标准库定义了许多用于操作序列的算法,大...
    99+
    2023-06-29
  • C语言中的文件操作实例分析
    这篇文章主要介绍了C语言中的文件操作实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言中的文件操作实例分析文章都会有所收获,下面我们一起来看看吧。1.为什么使用文件在学习结构体时,写了一个简易的通讯录...
    99+
    2023-07-02
  • Java中File类和IO流的示例分析
    这篇文章主要为大家展示了“Java中File类和IO流的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java中File类和IO流的示例分析”这篇文章吧。IO流:IO流概述:IO:输入/...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作