深圳专业网站建设公司好吗/1688精品货源网站入口

深圳专业网站建设公司好吗,1688精品货源网站入口,如何做网站?,音乐网站的音乐怎么做在C语言中,我们可以使用函数freopen()将现有文件指针重定向到另一个流。freopen()的原型如下FILE * freopen ( const char * filename, const char * mode, FILE * stream );例如,要将stdout重定向为文本文件,我们可以编写freopen ("tex…

在C语言中,我们可以使用函数freopen()将现有文件指针重定向到另一个流。freopen()的原型如下

FILE * freopen ( const char * filename, const char * mode, FILE * stream );

例如,要将stdout重定向为文本文件,我们可以编写

freopen ("text_file.txt", "w", stdout);

虽然在C++中仍然支持这种方法,但本文将讨论另一种重定向 I/O streams的方法。

C++作为一种面向对象的编程语言,不仅使我们能够定义自己的流,而且还可以重定向标准流。因此,在C++中,流是一个对象,其行为由类定义。因此,任何表现得像流的东西都是流。

C++中的流对象主要有三种类型:

  • istream : 此类型的流对象只能从流执行输入操作

  • ostream : 这些对象只能用于输出操作。

  • iostream : 可以同时用于输入和输出操作

顾名思义

i代表输入input

o代表输出output

stream//流

iostream//输入输出流,这只是C++的一个流文件,因为C++的输入输出都是流处理的

istream//就是只管输入的流

ostream//就是只管输出的流

(理论上应该是iostream包含了istream和ostream。但是如果只想使用ostream中的某个功能却使用了这个iostream,而iostream比较大,又包含了istream,那么这样的调用会浪费资源)

所有这些类以及文件流类都派生自以下类:ios和streambuf。因此,filestream和IO流对象的行为类似。

所有流对象还具有类streambuf的关联数据成员。简单地说,streambuf对象是流的缓冲区。从流中读取数据时,我们不会直接从源中读取数据,而是从链接到源的缓冲区中读取数据。同样,首先在缓冲区上执行输出操作,然后在需要时刷新缓冲区(将其写入物理设备)。

C++允许我们为任何流设置流缓冲区。因此,重定向流的任务只不过是更改与流相关联的流缓冲区。因此,我们需要将流A重定向到流B

  1. 获取A的流缓冲区并将其存储在某处

  2. 将A的流缓冲区设置为B的流缓冲区

  3. 如果需要,将A的流缓冲区重置为其先前的流缓冲区

我们执行重定向操作使用ios::rdbuf()方法。对于这个方法,如果不传参数,那么直接返回流对象的buffer指针。如果传递了某个流对象的buffer指针,那么将当前的流对象绑定到那个传递过来的流对象的buffer上。

我们可以使用函数 ios::rdbuf()来执行两次操作。

1) stream_object.rdbuf(): 返回流对象buffer
2) stream_object.rdbuf(streambuf * p): 绑定流对象buffer

下面是一个演示步骤的示例程序

// Cpp程序将cout重定向到文件 
#include 
#include 
#include using namespace std; int main() 
{ fstream file; file.open("cout.txt", ios::out); string line; // cout的备份流缓冲区streambuf* stream_buffer_cout = cout.rdbuf(); streambuf* stream_buffer_cin = cin.rdbuf(); // 获取文件的streambuffer streambuf* stream_buffer_file = file.rdbuf(); // 将cout重定向到文件cout.rdbuf(stream_buffer_file); cout << "Linux迷www.linuxmi.com这行写入文件" << endl; // 将cout重定向回屏幕cout.rdbuf(stream_buffer_cout); cout << "www.linuxmi.com这一行被写入屏幕" << endl; file.close(); return 0; 
}

屏幕输出:

www.linuxmi.com这一行被写入屏幕

下面这一行将写入文件
Linux迷www.linuxmi.com这行写入文件

注意:

以上步骤可以压缩为一个步骤

auto cout_buf = cout.rdbuf(file.rdbuf())

// 设置流缓冲区和返回先前的
streambuffer back to cout_buf

OK,本文就这样,有什么不对的地方请指正。

来源:https://www.linuxmi.com/io-redirection-c.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338742.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

租房界的php,php实现出租房数据管理及搜索页面

这篇文章主要为大家详细介绍了php出租房数据管理及搜索页面的相关资料&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们可以参考一下php数据访问例子&#xff1a;租房信息管理&#xff0c;具体内容如下1.数据库建表2. zufangzi.php租房子区域&#xff1a;全选requi…

ln函数怎么看奇偶性_Python中函数的参数应该怎么理解?看完这篇文章情不自禁的想收藏...

前面给大家讲过&#xff0c;函数是一种编程思想&#xff0c;是提高代码重复利用的设计思路&#xff0c;是代码设计更深层次的产物。今天要给大家讲的就是函数的核心&#xff1a;函数的参数基本概念1、函数的参数&#xff1a;是指函数完成某项功能所需要的信息。举个例子&#x…

面向对象设计思想-C语言

面向对象的三个特征&#xff1a;封装&#xff0c;继承&#xff0c;多态。但是C语言不是面向对象编程语言&#xff0c;所以需要借助一些技巧来实现这三个特征&#xff1a;&#xff08;1&#xff09;C语言没有成员函数&#xff0c;struct只能封装数据&#xff0c;不能封装方法&am…

three.js加载3d模型_基于WebGL的3D技术在网页中的运用 ThingJS 前端开发

Three.js、ThingJS这些引擎库可以加载3D制作软件的模型&#xff0c;大幅度提高了制作效率&#xff0c;改变WebGL开发困难的局面&#xff0c;让Web开发者享受便捷的3D开发服务。三者的难度对比如下&#xff1a;ThingJS&#xff08;框架&#xff09;< Three.js&#xff08;引擎…

C语言 | typedef

C语言typedef用新的类型名代替原有的类型名//指定用Integer为类型名&#xff0c;作用与int相同。 typedef int Integer&#xff1b;//指定用Real为类型名&#xff0c;作用与float相同。 typedef float Real&#xff1b;C语言允许程序设计者用一个简单的名字代替复杂的类型形式命…

php珠心算源码,深度解析珠心算的“开智”功能

编者按&#xff1a;本文来自李绵军校长在廊坊智慧特训营演讲。李绵军校长通过十几年来对珠心算的钻研练习&#xff0c;详细解读了珠心算的开智功能&#xff0c;以及“一门深入”的作用。珠心算的开智价值是在哪里&#xff1f;大家都说开发智力&#xff0c;我在这讲开发智力不是…

C语言 函数

定义函数在 C 语言中&#xff0c;函数由一个函数头和一个函数主体组成。下面列出一个函数的所有组成部分&#xff1a;返回类型&#xff1a;一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值&#xff0c;在这种情况下&#xff…

自适应 幻灯片代码 app_字节跳动 To B 再添一员,将推出飞书文档独立App | 36氪独家...

不只是功能点的延伸&#xff0c;以 C 端打 B 端&#xff0c;是字节跳动推出“飞书文档”的另一体现。文&#xff5c;苏建勋头图来源| IC photo据36氪获悉&#xff0c;字节跳动旗下移动办公软件“飞书”将于近期推出独立 App “飞书文档”。这是继2月底&#xff0c;字节跳动推出…

听说高手都用记事本写C语言代码?

坊间传闻高手都喜欢用记事本写代码&#xff0c;那么问题来了&#xff0c;我们以C语言为例&#xff0c;如何用记事本编译运行呢&#xff1f;其实最简单的方式就是安装GCC编译器&#xff0c;在记事本编写C语言程序&#xff0c;然后再在命令行用GCC编译运行&#xff0c;下面我简单…

jface_使用JFace Viewer延迟获取模型元素

jfaceEclipse JFace Viewers显示的模型元素有时需要花费大量时间来加载。 因此&#xff0c; 工作台提供了IDeferredWorkbenchAdapter类型以在后台获取此类模型元素。 不幸的是&#xff0c;似乎仅通过DeferredTreeContentManager派生的AbstractTreeViewer支持此机制。 因此&…

C语言边角料:结构体中指针类型的成员变量,它的类型重要吗?

一、前言昨天在编译代码的时候&#xff0c;之前一直OK的一个地方&#xff0c;却突然出现了好几个 Warning!本着强迫症要消灭一切警告的做法&#xff0c;最终定位到&#xff1a;是结构体内部&#xff0c; 指向结构体类型的指针成员变量导致的问题。这个问题&#xff0c;也许永远…

C语言:--位域和内存对齐

位域位域是指信息在保存时&#xff0c;并不需要占用一个完整的字节&#xff0c;而只需要占几个或一个二进制位。为了节省空间&#xff0c;C语言提供了一种数据结构&#xff0c;叫“位域”或“位段”。“位域“是把一个字节中的二进位划分为几个不同的区域&#xff0c;并说明每个…

C语言实现数据字节序交换的四种方式

1关于数据字节序的说明1&#xff09;关于字节序的说明字节序有两种大端和小端。大端&#xff1a;数据高位存放在低地址&#xff0c;地位放在高地址。如0x12345678在内存中存放为地址从左到右为低到高12345678。 小端&#xff1a;数据地位存放在低地址&#xff0c;高位存放在高地…

C语言如何实现动态数组?

提出问题请问在c语言里如何实现动态大小的数组啊&#xff0c;比如说int a[N];&#xff0c;这里N的值可以在程序中定&#xff0c;或者有什么方法可以实现类似的功能&#xff1f;总之只要在编译时不用制定数组大小就行。分析问题嵌入式系统的内存是宝贵的&#xff0c;内存是否高效…

Oracle为什么装在XP系统,重装xp系统后oracle恢复方法

重装系统后oracle如何恢复呢?下面就给大家介绍一下重装系统后oracle的恢复方法1、我们安装数据库软件只需安装同版本的数据库软件&#xff0c;不需要创建数据库。最好安装在和原来数据库同样的%ORACLE_HOME%下&#xff0c;省得还要修改参数文件路径等。(直接覆盖原来的oracle即…

vba 当前文件名_VBA代码解决方案第77讲内容:如何导出文件

大家好&#xff0c;我们今日继续讲解VBA代码解决方案的第77讲内容&#xff1a;如何导出文件&#xff0c;形成一个文本文件&#xff0c;如果需要将工作表中的数据保存为文本文件&#xff0c;可以创建一个文本文件用于保存数据。应用于FileSystemObject对象的CreateTextFile方法创…

常见的C语言字符串操作

#字符串倒序输出实现逻辑&#xff0c;通过strlen获取字符串长度&#xff0c;然后通过 len/2 进行交叉赋值&#xff0c;这里需要注意&#xff0c;不需要考虑len是奇数还是偶数的问题。如果len是奇数&#xff0c;最后一个字符就不需要倒序&#xff0c;如果是偶数&#xff0c;最后…

mui 时间样式错乱_微信公众号素材样式中心在哪?公众号动态分割线怎么添加?...

相比于静态分割线&#xff0c;动态分割线更有特色&#xff0c;能给文章增加趣味性。今天壹姐就来给公众号运营的小伙伴们介绍&#xff0c;怎么添加动态的分割线样式到文章里吧~1怎么使用公众号样式中心公众号后台的编辑功能比较基础&#xff0c;想要使用好看的公众号素材&#…

php获取访问量文本形式,php利用用文本统计访问量的方法图文详解

这篇文章主要介绍了php使用文本统计访问量的方法,涉及php文本文件读写与数值运算的相关技巧,需要的朋友可以参考下方法1&#xff1a;$fp fopen("counter.txt", "r");while(!flock($fp, LOCK_EX)) { // acquire an exclusive lock// waiting to lock the f…

yolov4论文_Alexey 大神接棒,YOLOv4 重磅来袭!快来一睹论文真容吧!| 原力计划...

作者 | Mr.Jk.Zhang责编 | 夕颜出品 | CSDN(ID:CSDNnews)前言千呼万唤始出来系列&#xff0c;继YOLOv3两年后&#xff0c;YOLOv4终于在上周出来了&#xff0c;让我们来一睹论文真容吧&#xff01;由于YOLO之父Jeseph Redmon在今年2月已宣布退出CV学术界&#xff0c;大家都以为Y…