`
897371388
  • 浏览: 529904 次
文章分类
社区版块
存档分类
最新评论

C++之I/O流

阅读更多

主要探索:

1 标准I/O

2 文件I/O

3 窜I/O 对内存中指定空间进行输入输出


首先标准I/O

输出格式控制

具体示例:

#include <iostream>
#include <iomanip> //格式控制符在其中定义

using namespace std;

//通过控制符控制输出格式
void control( int a){
	cout<<"10进制"<<dec<<a<<endl
		<<"16进制"<<hex<<a<<endl
		<<"8 进制"<<setbase(8)<<a<<endl;
	char *pt="China";
	cout<<setw(10)<<pt<<endl
		<<setfill('*')<<setw(10)<<pt<<endl; //制定宽度 和填充
	double pi=22.0/7.0;
	cout<<setiosflags(ios::scientific)<<setprecision(8);//指数形式输出8位小数
	cout<<"pi="<<pi<<endl;
	cout<<"pi="<<setprecision(4)<<pi<<endl //改为位小数
		<<"pi="<<setiosflags(ios::fixed)<<pi<<endl;
}
//通过对象控制输出格式
void obj( int a){
	//10进制显示
	cout.setf(ios::showbase);  //显示基数符号(ox或)
	cout<<"10进制"<<a<<endl;  //默认10进制显示
	cout.unsetf(ios::dec);    //终止10进制的格式显示
   
	//16进制的显示
	cout.setf(ios::hex);      //设置16进制显示
	cout<<"16进制"<<a<<endl;
	cout.unsetf(ios::hex);
    
	//8进制显示
	cout.setf(ios::oct);
	cout<<"8 进制"<<a<<endl;
	cout.unsetf(ios::oct);

	char *pt="China";
	//指定域宽
	cout.width(10);
	cout<<pt<<endl;
    
	//指定空白处用*填充
	cout.fill('*');
	cout<<pt<<endl;
	
	double pi=22.0/7.0;
	cout<<"pi=";

	//指定以科学计数法输出
	cout.setf(ios::scientific);
	cout.width(14);
	cout<<pi<<endl;
	cout.unsetf(ios::scientific);

	//指定用定点形式输出
	cout.setf(ios::fixed);
	cout.width(12);
	cout.setf(ios::showpos);//整数输出 + 号
	cout.setf(ios::internal);//数符出现在左侧
	cout.precision(6);
	cout<<pi<<endl ;
}

int main(){
	int a;
	cin>>a;
	control(a);
	obj(a);
	return 0;
}

具体运行结果:


几个标准I/O有关函数

#include <iostream>
#include <iomanip> //格式控制符在其中定义

using namespace std;


int main(){
    char _char='S';
	cout.put(_char);
	cout<<endl;
	putchar(_char); //cout.put(_char)作用相同
	cout<<endl;

	//标准输入流  流提取符通常跳过输入流里面空格 tab键 换行等空白符  只有输入完数据后按回车键,数据才被送入键盘缓冲区,形成流
	/*
	//cin.get()不带参数
	int _num;
	while((_num=cin.get())!=EOF){  
		cout.put(_num);
	}
	*/

	/*
	 //cin.get()带一个参数参数
	char _test;
	while(cin.get(_test)){      
		cout.put(_test);
	}
	*/

	/*
	  //cin.get()带多个个参数参数
	char ch[20];
	cin.get(ch,10,'\\n');     
	cout<<ch<<endl;
	*/

	/*
	//getline()使用示例  

    char ch[20];
	cout<<"enter a string "<<endl; // i like C++./i study hard
	cin>>ch;
	cout<<"the first is :"<<ch<<endl;//i
	
	cin.getline(ch,20,'/');
	cout<<"the second:"<<ch<<endl;   //like C++.
	cin.getline(ch,20 );
	cout<<"the thirst:"<<ch<<endl;  //i study hard
	*/
	return 0;
}

文件I/O

文件中数据组织形式氛围ASCII和二进制文件。

对ascii文件操作

具体示例:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;


int main(){
	//将数据输入文件
   int a[10];
   ofstream outfile("test.txt",ios::out);  //建立文件流 
   if(!outfile){
	   cerr<<"open error"<<endl;
	   exit(1);
   }
   cout<<"enter 10 int num:"<<endl;
   for(int indexLoop=0;indexLoop<10;indexLoop++){
	cin>>a[indexLoop];
	outfile<<a[indexLoop]<<" "; //向文件写入数据  文件以前内容被覆盖  不是将数据输出到屏幕,而是文件  
   }
  // outfile1<<str; //这时只能输入一个字符
   outfile.close();
   
   //将数据从文件输出
   ifstream infile("test.txt",ios::in);
   if(!infile){
	   cerr<<"open error!"<<endl;
	   exit(1);
   }
   int b[10];
   for(int IndexLoop=0;IndexLoop<10;IndexLoop++){
      infile>>b[IndexLoop];//不是通过屏幕进行数据输入,而是文件,
	  cout<<" "<<b[IndexLoop];
   }
   infile.close();
	return 0;
}

运行结果:


对二进制文件具体示例:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;


int main(){
	//将数据输入文件
   int a[10];
   //ofstream outfile("test.txt",ios::out);  //建立文件流
   ofstream outfile("test.dat",ios::binary);  //建立文件流 
   if(!outfile){
	   cerr<<"open error"<<endl;
	   exit(1);
   }
   cout<<"enter 10 int num:"<<endl;
   for(int indexLoop=0;indexLoop<10;indexLoop++){
	cin>>a[indexLoop];
	outfile.write((char *)&a[indexLoop],sizeof(int));
//	outfile<<a[indexLoop]<<" "; //向文件写入数据  文件以前内容被覆盖  不是将数据输出到屏幕,而是文件  
   }
  // outfile1<<str; //这时只能输入一个字符
   outfile.close();
   
   //将数据从文件输出
   //ifstream infile("test.txt",ios::in);
   ifstream infile("test.dat",ios::binary);
   if(!infile){
	   cerr<<"open error!"<<endl;
	   exit(1);
   }
   int b[10];
   for(int IndexLoop=0;IndexLoop<10;IndexLoop++){
      //infile>>b[IndexLoop];//不是通过屏幕进行数据输入,而是文件,
	   infile.read((char *)&b[IndexLoop],sizeof(int));
	  cout<<" "<<b[IndexLoop];
   }
   infile.close();
	return 0;
}

运行结果:


字符窜流

#include <iostream>
#include <strstream>

using namespace std;


int main(){
	
	char a[20]="hello,world";
	char b[20];
   //字符串流关联的不是文件,不需要打开和关闭文件
   ostrstream strout(b,sizeof(b)); //建立输出字符串流对象  第一个参数和数组c建立关联 第二个参数一般和数组长度相等
   cout<<sizeof(a)<<endl;
   for(int indexLoop=0;indexLoop<sizeof(a);indexLoop++){
	strout<<a[indexLoop];
	cout<<a[indexLoop];
   }
   cout<<endl;
   strout<<ends;//ends 是c++ I/O 操作符,插入一个'\\0'
    cout<<"array:"<<endl<<b<<endl;

	char _test[20]="hello,world!";
	char _instr[20];
	istrstream strin(_test,sizeof(_test));  //建立输入流对象,并与字符数组关联
	for(int index=0;index<sizeof(_test);index++){
		strin>>_instr[index];
	}
	for(int i=0;i<sizeof(_instr);i++){
	  cout<<_instr[i]<<" ";
	}
	cout<<endl;

	return 0;
}

运行结果:



分享到:
评论

相关推荐

    实验七 C++的I/O流(验证性)

    实验七 C++的I/O流(验证性)实验报告 doc 格式

    C++ I/O流课件 很不错的哦

    C++ I/O流课件C++ I/O流课件 很不错的哦

    C++I/O描述

    介绍了 C++的 I/O( 输入输出 )问题,本文结构清晰,讲解简单易懂,对 C++ 的流模型作为细致的分析和讲解, 并介绍了 IO 流类中的各种成员函数,对于输出部分介绍了 cout 流, put 和 write 函数,介绍了 4 种控制...

    c++ I/O流的常用控制符 C++常用特殊字符

    c++ I/O流的常用控制符 C++常用特殊字符 便于查找 很方便的小文档

    C++高级程序设计实验十二模板类的构造& C++的I/O流类库

    C++高级程序设计实验十二模板类的构造& C++的I/O流类库 1.理解和应用类模板和函数模板; 2.理解C++输入输出流类库; 3.掌握ios类中用于控制输入输出成员函数的使用; 4.掌握操纵符格式控制的使用; 5.掌握用户...

    C++面向对象程序设计

    前言 第1章 C++语言概述 第2章 数据类型和表达式 第3章 预处理和语句 第4章 函数和作用域 第5章 类和对象(一) 第6章 类和对象(二) 第7章 继承性和派生类 第8章...C++的I/O流库

    C和C++串口通讯典型应用实例编程实践

    应用篇通过PC与PC、PC与单片机、PC与智能仪器、PC与PLC、PC与GSM短信模块、PC与远程I/O模块等典型应用实例,详细介绍了C/C++语言利用MSComm控件、API函数实现串口通信的程序设计方法。每个实例的设计任务同时采用C++...

    c++课件(谭浩强)

    1 C++语言特点 2 面向对象程序设计概述 3 类和对象 4 派生类与继承 5 多态性 6 模板 7 C++的I/O流 8 面向对象系统开发基础

    新编C++习题与解析 3-4章

    本书根据计算机专业C++语言程序设计课程的教学大纲编写,全书共分10章,分别介绍C++语言概述、类和对象、引用、友元、运算符重载、模板、继承和派生、多态性和虚函数、C++的I/O流库和异常处理。每章由基本知识点和...

    c++参考手册 2018版

    基于流的 I/O 同步的输出 (C++20) I/O 操纵符 本地化库 正则表达式库 (C++11) basic_regex − 算法 原子操作库 (C++11) atomic − atomic_flag atomic_ref (C++20) 线程支持库 (C++11) 文件系统库 (C++17)

    C++ 基本的输入输出cout

    C++ 的 I/O 发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出...

    c++习题集.pdf

    文档包含大量的C++的练习题,并且有答案。包含的内容有c++基本概念、函数、类与对象、类与对象的高级操作、运算符重载、继承与派生、多态性、异常处理与模板、C++的I/O流库。

    fast-io 是一个 C++20 输入/输出库,可提供出色的速度,旨在取代常用的库

    fast_io 是一个 C++20 输入/输出库,可提供出色的速度,旨在取代常用的库。它是一个仅标头库,并在 MIT 许可证下获得许可...fast_io是用C++20概念来实现的I/O库,用于取代iostream和stdio.h,比流和stdio.h至少快10倍。

    C++流类体系与文件操作

    通过本章学习,应理解I/O流、流类与流类体系的概念,掌握流的输入/输出控制格式。了解C++有关文件的概念及文件的使用方法,理解文件流类体系结构,掌握实现文件操作的成员函数的使用方法,学会文本文件的打开、读/...

    C/C++串口通信典型应用实例编程实践.(电子工业.曹卫杉)

    应用篇通过PC与PC、PC与单片机、PC与智能仪器、PC与PLC、PC与GSM短信模块、PC与远程I/O模块等典型应用实例,详细介绍了C/C++语言利用MSComm控件、API函数实现串口通信的程序设计方法。每个实例的设计任务同时采用C++...

    C++键盘输入与屏幕输出

    键盘输入与屏幕输出 C++中通过输入/输出流来实现标准输入/输出操作。 流是与I/O设备相关联的数据通信对象 输入操作通过流cin来实现 输出操作通过流cout来实现

    C/C++ 语言参考 比较老的资源了

    此文件非常适合c++初学者,可以用来查找c++I/O流操作函数,标准模板库用法,string用法等,非常实用

    C++进阶课程讲义_v1.0.4.pdf

    9.1 I/O流的概念和流类库的结构 51 9.2标准I/O流 53 9.2.1标准输入流 55 9.2.2标准输出流 59 9.3文件I/O 66 9.3.1文件流类和文件流对象 66 9.3.2C++文件的打开与关闭 67 9.3.3C++对ASCII文件的读写操作 69 9.3.4 C++...

    C++程序设计实验指导书

    C++课程实验指导书 目 录 第一部分 VC++开发环境 1 一、Visual C++6.0开发环境简介 1 二、控制台应用程序的创建 5 三、程序调试 9 第二部分 C++实验项目 14 实验一 基本数据类型与输入输出 14 ...实验十七 I/O流 87

    输入输出流

    输入输出流 掌握C++输入/输出流(I/O流)的基本概念; 能够在输入/输出中进行基本的格式控制; 掌握文件的I/O操作。

Global site tag (gtag.js) - Google Analytics