第7章 C++流类库输入与输出(2)

合集下载

C中的文件操作和输入输出流

C中的文件操作和输入输出流

C中的文件操作和输入输出流C语言是一种低级语言,对于文件的操作和输入输出流的处理是其重要的特性之一。

通过文件操作和输入输出流,我们可以读取外部文件的内容、将程序的输出保存到文件中,同时还可以创建、编辑和删除文件。

本文将介绍C语言中的文件操作和输入输出流,帮助读者更好地理解和运用这些功能。

一、文件操作文件操作是指对计算机硬盘中的文件进行读写、创建和删除的操作。

C语言提供了一系列的函数和方法,方便程序员进行文件的操作。

下面是几个常用的文件操作函数:1. fopen()函数:用于打开文件。

该函数接受两个参数,第一个参数是文件名,第二个参数是打开方式(例如,读取、写入、追加等)。

成功打开文件后,该函数会返回一个指向该文件的指针。

2. fclose()函数:用于关闭文件。

当我们不再需要使用打开的文件时,应该使用该函数关闭文件。

关闭文件可以释放系统资源,避免造成内存泄漏。

3. fread()函数:用于读取文件内容。

该函数接受四个参数,分别是指向数据的指针、每个数据的大小、要读取的数据量以及文件指针。

这样我们可以通过该函数从文件中读取指定数量的数据,并存储到指定的内存地址中。

4. fwrite()函数:用于向文件中写入内容。

该函数接受四个参数,分别是指向数据的指针、每个数据的大小、要写入的数据量以及文件指针。

通过该函数,我们可以将指定数量的数据写入到文件中。

5. fseek()函数:用于设置文件指针的位置。

该函数接受三个参数,分别是文件指针、偏移量以及起始位置。

通过使用该函数,我们可以控制文件指针的位置,实现文件的跳转和定位。

二、输入输出流输入输出流是C语言中用于处理文件读写的一种机制。

通过输入输出流,我们可以将程序的输入和输出连接到文件中,实现对文件的读写操作。

C语言中提供了标准输入输出流,分别对应于键盘输入和屏幕输出。

1. 标准输入流(stdin):标准输入流用于接收用户的输入,通常使用scanf()函数来读取输入的内容。

C++的流类库与输入输出

C++的流类库与输入输出
cout<<i<<" ";
cout<<endl;
for(i=1;i<=i;i++)
{
cout<<i;
for(j=1;j<=9;j++)
cout<<i*j;
}
return 0;
}
【修改语句】
2、下面的程序用于统计文件xyz.txt中的字符个数,请填空完成程序。
#include<iostream>
#include<fstream>
《C++面向对象程序设计》实验报告
实验序号:6实验项目名称:C++的流类库与输入输出
学 号
姓 名
专业
实验地点
指导教师
吴芸
实验时间
一、实验目的及要求
(1)掌握C++格式化的输入输出方法;
(2)掌握重载“<<ቤተ መጻሕፍቲ ባይዱ和“>>”的方法;
(3)掌握磁盘文件的输入输出方法;
二、实验设备(环境)及要求
Micorsoft Visual C++ 6.0
{(2)
i++;
}
cout<<"文件字符个数:"<<i<<endl;
return 0;
}
【运行结果截图】:
3、重载运算符“<<”和“>>”,使其能够输入一件商品的信息和输出这件商品的信息。商品信息有编号,商品名和价格。
【商品类Merchandise框架】:
class Merchandise{

c++流类库与输入输出习题答案

c++流类库与输入输出习题答案

double b=2345.67890; char c[100]; cout<<setfill('*'); cout<<left<<setw(12)<<a<<endl; cout<<right<<setw(12)<<a<<endl; cout<<hex<<a<<'\t'<<dec<<a<<'\t'<<oct<<a<<endl; cout<<scientific<<b<<'\t'<<fixed<<b<<endl; return 0; } 4.2 编写一程序,将两个文件合并成一个文件。 #include<iostream> #include<fstream> using namespace std; int main(){ int i=1; char c[1000]; ifstream ifile1("D:\\10_4_3.cpp"); ifstream ifile2("D:\\10_4_4.cpp"); ofstream ofile("D:\\r10_4.cpp"); while(!ifile1.eof()){ ifile1.getline(c,999); ofile<<c<<endl; } while(!ifile2.eof()){ ifile2.getline(c,999); ofile<<c<<endl; } ifile1.close(); ifile2.close(); ofile.close(); return 0; } 4.3 编写一程序,统计一篇英文文章中单词的个数与行数。 #include<iostream> #include<fstream> using namespace std; bool isalph(char); int main(){ ifstream ifile("E:\\lenovo\\english\\daily.doc"); char text[1000]; bool inword=false; int rows=0,words=0; int i; while(!ifile.eof()){

C++:流类库与输入输出

C++:流类库与输入输出

C++:流类库与输⼊输出7.2.1 C++的输⼊输出流ios:流基类(抽象类)istream:通⽤输⼊流类和其他输⼊流的基类ostream:通⽤输出流类和其他输出类的基类iostream:通⽤输⼊输出流类和其他输⼊输出流类的基类(以下的派⽣类对象有cin、cout、cerr、clog)ifstream:输⼊⽂件流类ofstream:输出⽂件流类fstream:输⼊输出⽂件流istrstream:输⼊字符串流类ostrstream:输出字符串流类strstream:输⼊输出字符串类iostream_withassign: 通⽤输⼊输出流类和其他输⼊输出流类iostream的的派⽣类7.2.2 预定义的流对象C++中包含⼏个预定义的流对象,它们是标准输⼊流对象cin、标准输出流对象cout、⾮缓冲型的标准出错流对象ceer、缓冲型的标准出错流对象clogcin是istream的派⽣类istream_withassign的对象,它与标准输⼊设备(通常是键盘)相联系。

cout是ostream的派⽣类ostream_withassign的对象,它与标准输出设备(通常是显⽰器)相联系。

ceer是ostream的派⽣类ostream_withassign的对象,它与标准错误输⼊设备(通常是显⽰器)相联系。

clog是ostream的派⽣类ostream_withassign的对象,它与标准错误输⼊设备(通常是显⽰器)相联系。

由于istream和ostream类都在头⽂件iostream中声明的,因此只要在程序中包含头⽂件iostream.h,C++程序开始时这四个标准流对象的构造函数都被⾃动调⽤。

7.2.3 输⼊输出流的成员函数(1)put函数put函数⽤于输出⼀个字符格式:cout.put(char ch)例如:cout.put('A')===cout.put(65)===cout.put(25+40)(2)get函数get函数的功能与提取运算符>>类似,主要不同之处是get函数在读⼊数据时可以包括空⽩字符,⽽后者不可以。

C++面向对象程序设计 第7章 输入输出流类库

C++面向对象程序设计 第7章 输入输出流类库

infile.open(“myfile1.txt”); 打开文件“ 用于输入, 打开文件“myfile1.txt”用于输入,并将这个文件 用于输入 与输入文件类对象infile建立联系,今后,在程序 建立联系,今后, 与输入文件类对象 建立联系 的地方就用infile 中,用到这个文件“myfile1.txt”的地方就用 用到这个文件“ 的地方就用 来代替。 来代替。 outfile.open(“myfile2.txt”); 打开文件“ 用于输出, 打开文件“myfile2.txt”用于输出,并将这个文件 用于输出 与输出文件类对象outfile建立联系,今后,在程 建立联系,今后, 与输出文件类对象 建立联系 序中,用到这个文件“ 序中,用到这个文件“myfile2.txt”的地方就用 的地方就用 outfile来代替。 来代替。 来代替
输入输出流(I/O Stream) 输入输出流( Stream) C++语言的I/O系统向用户提供一个统一的接口 C++语言的I/O系统向用户提供一个统一的接口,使得程序 语言的I/O系统向用户提供一个统一的接口, 的设计尽量与所访问的具体设备无关,在用户与设备之间 的设计尽量与所访问的具体设备无关, 提供了一个抽象的界面:输入输出流。 提供了一个抽象的界面:输入输出流。 ios istream(输入流 输入流) 输入流 ostream(输出流 输出流) 输出流 iostream 在“iostream.h”中说明 中说明
friend istream & operater >>(istream &, ClassName &);
将输入流改为输出流。 将输入流改为输出流。
class A { float x, y; public: 在类中原型说明 ..... friend ostream & operater << (ostream &, A &); }; 在类外定义函数 ..... A a(2,3); ostream & operater <<(ostream &os, A &a) cout<<a; { cout<<“ The object is:”<<endl; .... os<<a.x<<‘\t’<<a.y<<endl; return os; }t x, y; public: 在类中原型说明 ..... friend istream & operater >>(istream &, A &); }; ..... A a; cin>>a; .... 在类外定义函数 istream & operater >>(istream &is, A &a) { cout<<“ Input a:”<<endl; is>>a.x>>a.y; return is; } 返回输入流 重新定义输入流

第7章 输入输出流

第7章 输入输出流

第7章 输入输出流
第7章 输入输出流
(2)返回流是否处于正常状态 :int fail() const; 该函数返回failbit状态,以判断流操作是否失败。failbit表 示发生流格式错误,但缓冲区中的字符没有丢失。这种错误通常 是可以修复的。 (3)判断流是否正常 int good()const; int operator void *(); 上述两个函数的功能相似,如果eofbit、failbit和badbit全 部都没有被置位[即均为 0,读写正常(即符合读取和写入的类 型),没有文件末尾],则返回1 (true),否则返回0 (false)。
第7章 输入输出流
C++程序设计
第7章 输入输出流
第7章 输入输出流
流类简介 标准流对象 控制 I/O 格式 调用cout的成员函数 调用cin的成员函数
本章内容
第7章 输入输出流
第一节 流类简介
常考知识点: C++流的基本概念 iostream中流类库的基本概念 主要头文件的基本功能 提取运算符>>的使用 插入运算符<<的使用
(1)返回流是否结束: int eof() const; 函数返回eofbit的值。当文本文件结束时,在输入流中会 自动设置eofbit。在应用程序中可以用eof( )函数测试是否到达 文件尾,当文件操作结束遇到文件尾时,函数返回1;否则返回0。 在标准输入流cin中,可以通过按下〈Ctrl+Z〉组合键表示 输入流的结束。
第7章 输入输出流
(3)设置和返回输出宽度 int width(int nw); 该函数将下一个输出项的显示宽度设置为nw。如果nw大于 数据所需宽度,则在没有特别指示时数据采用右对齐方式。如果 nw小于数据所需宽度,则nw无效,数据以默认格式输出。函数 width()的设置没有持续性,输出一项数据后自动恢复为系统默 认设置。

C语言的输入输出流

C语言的输入输出流

C语言的输入输出流C语言作为一种面向过程的编程语言,其输入输出流(Input/Output Stream)是非常重要的概念。

输入输出流允许我们在程序中与用户交互,从用户处接收输入并向用户展示输出。

本文将探讨C语言中的输入输出流相关的概念和函数,以及如何在程序中使用它们。

一、标准输入流(stdin)、标准输出流(stdout)和标准错误流(stderr)C语言中,有三个预定义的输入输出流,分别是标准输入流(stdin)、标准输出流(stdout)和标准错误流(stderr)。

它们分别被定义为文件指针,可以通过它们来进行输入和输出操作。

1. 标准输入流(stdin)标准输入流(stdin)用于从用户处接收输入。

在C语言中,我们可以使用`scanf()`函数来从标准输入流读取输入数据。

```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);printf("您输入的整数是:%d\n", num);return 0;}```在这个例子中,`scanf()`函数用于从标准输入流(stdin)中读取一个整数,并将其存储到变量`num`中。

然后,我们使用`printf()`函数将输入的整数输出到标准输出流(stdout)上。

2. 标准输出流(stdout)标准输出流(stdout)用于向用户展示输出。

在C语言中,我们可以使用`printf()`函数向标准输出流打印输出。

```c#include <stdio.h>int main() {printf("Hello, world!\n");return 0;}```在这个例子中,`printf()`函数用于向标准输出流(stdout)打印字符串"Hello, world!",并在字符串的末尾添加一个换行符。

c语言输入流和输出流的概念

c语言输入流和输出流的概念

c语言输入流和输出流的概念C语言输入流和输出流的概念输入流的概念•输入流是指从外部获取数据并输入到计算机程序中的数据流。

在C语言中,输入流通常用于从键盘或文件中获取输入。

•C语言中的输入流通常使用`头文件中的函数来实现,如scanf和fscanf`等。

输出流的概念•输出流是指将计算机程序中的数据输出到外部设备的流。

在C语言中,输出流通常用于向屏幕或文件等外部设备输出数据。

•C语言中的输出流通常使用`头文件中的函数来实现,如printf 和fprintf`等。

输入输出流的关系•输入流和输出流是C语言中用来进行输入和输出操作的重要概念。

•输入流和输出流可以通过函数的调用来切换,在输入操作时使用输入流,在输出操作时使用输出流。

输入流的操作•使用输入流可以从键盘或文件中获取输入数据,并赋值给变量或数组。

常用的输入流函数包括:1.scanf:从标准输入流中读取数据,并按照指定的格式赋值给变量。

2.fscanf:从指定的输入流中读取数据,并按照指定的格式赋值给变量。

输出流的操作•使用输出流可以将程序中的数据输出到屏幕或文件等外部设备。

常用的输出流函数包括:1.printf:将格式化的数据输出到标准输出流(屏幕)。

2.fprintf:将格式化的数据输出到指定的输出流(通常是文件)。

输入流和输出流函数的格式化控制符•在输入流和输出流函数中,格式化控制符用于指定输入和输出的数据格式。

•常用的格式化控制符包括:–%d:用于输出或输入整数。

–%f:用于输出或输入浮点数。

–%c:用于输出或输入字符。

–%s:用于输出或输入字符串。

示例代码#include <>int main() {int num;char str[50];printf("请输入一个整数:");scanf("%d", &num);printf("您输入的整数是:%d\n", num);printf("请输入一个字符串:");scanf("%s", str);printf("您输入的字符串是:%s\n", str);return 0;}以上是对C语言输入流和输出流的简述,输入流用于获取外部数据输入到程序中,输出流用于将程序中的数据输出到外部设备。

C++第07章 C++流类库与输入输出

C++第07章 C++流类库与输入输出

第07章 C++流类库与输入输出
信工计算机教研室
get读取单个字符(带1个参数)
#include <iostream> using namespace std; void main() { char a,b,c; cin.get(a).get(b).get(c); cout<<a<<' '<<b<<' '<<c<<endl; } cin.get()返回输入的字符,不能用于连续输入。
第07章 C++流类库与输入输出
信工计算机教研室
设置进制的其它方法
void main() { int x=156; cout<<setw(10)<< setfill('#')<<hex <<x<<endl; cout<<setw(10)<< setfill('*')<<oct <<x<<endl; }
信工计算机教研室
write输出指定数量的字符
void main() { 输出结果 char str[]=“One by one.”; One by one. int len=strlen(str); One by int tooShort=len-4; One by one. └ ↕ int tooLong=len+4; cout.write(str,len)<<endl; cout.write(str,tooShort)<<endl; cout.write(str,tooLong)<<endl; }

C语言中的输入输出流及其应用

C语言中的输入输出流及其应用

C语言中的输入输出流及其应用C语言是一种广泛应用于软件开发领域的编程语言,其提供了丰富的输入输出(I/O)函数和流(stream)的概念,以帮助开发者实现与用户或环境的交互。

本文将详细介绍C语言中的输入输出流及其应用。

一、输入流输入流用于接收外部数据供程序使用。

C语言提供了丰富的输入函数,包括:1. scanf函数:scanf函数用于从标准输入流(键盘)读取数据,并根据格式化字符串的指定将数据存储到指定的变量中。

例如:```cint age;scanf("%d", &age);```上述代码将从标准输入流读取一个整数,并将其存储到变量age中。

2. fgets函数:fgets函数用于从文件流或标准输入流中读取一行字符串并存储到指定的字符数组中。

例如:```cchar name[100];fgets(name, sizeof(name), stdin);```上述代码将从标准输入流读取一行字符串,并将其存储到字符数组name中。

二、输出流输出流用于向外部输出数据。

C语言提供了多种输出函数,包括:1. printf函数:printf函数用于向标准输出流(屏幕)输出格式化的数据。

例如:```cint num = 10;printf("The number is: %d\n", num);```上述代码将输出"The number is: 10"。

2. fputs函数:fputs函数用于向文件流或标准输出流中输出字符串。

例如:```cchar message[] = "Hello, world!";fputs(message, stdout);```上述代码将字符串"Hello, world!"输出到标准输出流。

三、文件流除了标准输入输出流外,C语言还支持文件流,用于读写文件。

文件流的操作需要使用文件指针,并且需要注意文件的打开和关闭。

流类库和输入输出C程序设计第2版课件

流类库和输入输出C程序设计第2版课件
ifstream ifile("test"); //打开test文件用于读,即输入
if (!ifile)
{ cout << "test文件不能打开" << endl;
return 0; } char str[80]; ifile >> str; // 与get不同, >>遇到空格时结束 ifile.close();
int=filebuf::openprot);
ofstream::ofstream(const char*,int=ios::out, int=filebuf::openprot);
fstream::fstream(const char*,int, int=filebuf::operprot);
所以1,2两步可合成: fstream iofile(”myfile.txt”,ios::in|ios::out);
int=filebuf::opernprot); void fstream::open(const char*,int,
int=filebuf::openprot); 第一个参数为要打开的磁盘文件名。第二个参数为打开方式, 有输入(in),输出(out)等,打开方式在ios基类中定义为 枚举类型。第三个参数为指定打开文件的保护方式,一般取默 认。所以第二步可如下进行: iofile.open(“myfile.txt”,ios::in|ios::out);
指针
streambuf
istream
ostream
ifstream
iostream
fstream
主要输入/输出流模板层次
ofstream
第2页,共21页。

C++程序设计课件:第7章 输入输出流

C++程序设计课件:第7章 输入输出流
或输入:a <Enter> b <Enter> c <Enter>
在上述情况下, 三个变量c1、c2和c3获得值均为 ‘a’、‘b’ 和 ‘c’。
应注意,最后输入的总是回车键。
又如:char s1[20], s2[20]; cin>>s1>>s2;
输入ab<Space>cd<Enter> 或输入ab<Tab>cd<Enter> 或输入ab<Enter>cd<Enter>
}
输出结果: abc comoperator
例7.14 输入成员函数的使用
#include <iostream.h>
#include <string.h>
void main( )
{
char buf[20], max[20];
int cnum, mc=0;
while(cin.getline(buf, 20))
{ double x;
cout<<"Please input x:";
//A
cin>>x;
if(x<0)
{ cerr<<x<<" is not a positive number!\n"; //B
return;
}
clog<<"The root of "<<x<<" is "<<sqrt(x)<<endl; //C
输入数据的类型必须与提取数据的变量类型一致。

c++输入输出流及文件操作详解

c++输入输出流及文件操作详解

返回输入流中指定位置的指针值
operstor>> 提取运算符, 不H包括空格、Tab和回车分隔符
18
7.2.3 重载流插入和流提取运算符
➢ 流插入运算符 << ,可用于输入基本类型数据, 流提取运算符 >> , 可用于输入基本类型数据, 也可重载用于输出和输入用户自定义的数据类型
➢ 重载函数形式 :
H
12
7.2.1 标准输出流
• cout
✓ ostream 类的对象(console output)
通常连向显示器,可以重定向(关联至文件)
✓ 在输出流类中重载<<的一组公用成员函数,实现安全便捷的 输出基本数据类型,输出自定义类型对象需要单独重载
ostream& operator <<(基本类型标识符);
get
从流中提取字符,包括空格
getline 从流中提取一行字符
istream&igngoeret( char*提p取ch并,丢in弃t流n中C指ou定n字t,符char delim = '\n' );
peek
返回流中下一个字符,但不从流中删除
istream&gcgoeutnltine( cha统r计* 最pc后h输, i入n的t n字C符o个u数nt, char delim = '\n' );
✓ cout流在内存中对应开辟了一个缓冲区,用来存放流中的数据。
流插入运算符
H
13
7.2.1 标准输出流
• 标准错误流对象cerr(console error ) • 标准错误流对象clog(console log的)
作用都是在标准输出设备上显示出错信息, 两个对象一般关联显示进行器输出。

流类库与输入输出-精品

流类库与输入输出-精品

//指定域宽为10
cout<<pt<<endl;
//输出字符串
cout.width(10);
//指定域宽为10
return 0;
}
东南大学软件学院(苏州 ) C++程序设计
三、文件输入输出
ASCII文件与二进制文件
ASCII文件提供了高级的输入输出功能,把若干个字节转换为一个有意 义的单位,然后以ASCII字符形式输入输出
东南大学软件学院(苏州 ) C++程序设计
三、文件输入输出
1. 对ASCII文件的操作
#include <fstream> using namespace std; int main( ) {int a[10]; ofstream outfile(″f1.dat″,ios::out); if(!outfile)
csoeutito<s<fsleatgioss(filoasg:sf(iixoes:d:s)cientific)<<se设tpr置ec浮is点ion以(8固);/定/按的指小数数形位式数输显出示,
sectoioust<fl<a″gpsi=(″io<s<:psi<h<oewnpdol; s)
/输/输出出时p正i值数给出”+”
cout<<″pi=″<<setprecision(4)<<pi<<endl;
//改为4位小数
c注ou意t<:<″p这i=些″<<控se制tio符sf号lag都s(在iosi::ofimxaendi)<p<头pi文<<件en中dl;,//改使为用小时数应形在式程输出序中包含相关

C++实验报告流类库与输入输出

C++实验报告流类库与输入输出

C++实验报告流类库与输入/输出实验八流类库与输入/输出(2学时)一.实验目的:1.熟悉流类库中常用的类及其成员函数使用方法;2.学习标准输入输出及格式控制;3.学习对文件的应用方法(二进制文件,文本文件)二.实验内容与步骤:1.实验题目:(2):编写程序,用二进制方式打开指定的一个文件,在每一行前加行号.(提示:使用void main(int argc,char*argv[])函数中的参数传递操作的文件名,定义ofstream的对象对文件进行操作.使用getline成员函数读入数据,使用cout输出字符到文件.)2.程序清单:#include<fstream>#include<strstream>#include<cstdlib>using namespace std;void main(){strstream file;ifstream in("f1.txt",ios::binary);file<<in.rdbuf();ofstream out("f1.txt",ios::binary);const int s=255;char l[s];for(int i=1;file.getline(l,s);i++)out<<i<<"."<<l<<endl; }3.测试结果如下:三.实验小结:1,重要的输出流:ostream,ofstream,ostringstream;2,重要的输入流:istream,ifstream,istringstream.。

输入与输出流库(与“输出”有关的文档共6张)

输入与输出流库(与“输出”有关的文档共6张)
ostrstream:输出串流类。 ostrstream:输出串流类。
ostream-withassign:用于cout, cerr和clog的流类。 ifstream:输入文件流类。 isstream-withassign:用于cout, cerr和clog的流类。 iostream:普通输入输出流类和用于其他输入输出流的基类。 strstream:输入输出串流类。 ostream:普通输出流类和用于其他输出流类的基类。 filebuf:用于磁盘文件的缓冲流类。
程序员教程
C/C++程序设计
输入与输出流库
第一页,共6页。
11.4输入与输出流库
• 与C语言一样,C++语言也没有设置内部的输入输出功能,其
目的是为了最大限度地保证语言与平台的无关性。在进行输入 操作时,可把输入数据看成是逐个字节地从外设流入到计算机 内存;在进行输出操作时,则把输出的数掘看成是逐个字节地 从内存流到外设。
ostream-withassign:用于cout, cerr和clog的流类。 stdiobuf:用干标准毓入输出幸柞的终冲流举.
用于 的流类。 ostream-withassign: cout, cerr和clog istream:普通输入流类和用于其他输入流的基类。
在进行输入操作时,可把输入数据看成是逐个字节地从外设流入到计算机内存;
第三页,共6页。
11.4输入与输出流库
• rlo库中的类 (3)输出流类。 ostfrsetraemabmou:f输s:抽出t象r文e缓件a冲流m流类基。:类普。通输出流类和用于其他输出流类的基类。 ofstream:输出文件流类。 在进行输入操作时,可把输入数据看成是逐个字节地从外设流入到计算机内存;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
其中: ios::out 表示是输出文件。 输入文件可定义为: ifstream myin(“myfile”, ios::in, 0); 0 表示为一般文件。其他文件类型有: 0: 一般文件 1: 只读文件 4: 系统文件
文件的输入/输出
例4:把一个整数、一个符点数和一个字符串写入文件 test
#inclphone number entered was : 025-349-2470
用户自定义类型的输入/输出
例2:圆的相关数据的输出
#include <iostream.h> class Circle { friend ostream &operator << (ostream &, const Circle &); //重载输出运算符 public: Circle(float a, float b, float c){ radius=a; x=b; y=c;} private: float radius; //圆的半径 float x, y; //圆心的坐标 }; ostream &operator << (ostream &output, const Circle &C) { output << "Center= [" << C.x << ", " << C.y << "]; " << endl << " Radius = " << C.radius << endl; return output;} void main( ) 结果: Center=[5, 10]; { Circle C(2.5, 5, 10); Radius = 2.5 cout << C; }
问题:万一文件打不开怎么办?可不可以输出错误信息?
文件的输入/输出
例5:把一个整数、一个符点数和一个字符串写入文件 test(修改版) #include<iostream.h> #include<fstream.h> void main( ) //包含文件输出流
{ ofstream myout("test"); //定义用户自己的流对象myout,以及文件名test
用户自定义类型的输入/输出
例1:电话号码的输入/输出(续)
void main( ) { PhoneNumber phone; //定义一个对象实例phone cout << "Enter a phone number in the form 025-3493333: " << endl; cin >> phone; //应用重载的输入运算符读入自定义的类型数据 cout << " The phone number entered was :" << endl << phone << endl; //应用重载的输出运算符写出自定义的类型数据 } 结果: Enter a phone number in the form 025-3493333: 025-3492470
//关闭文件
//关闭文件 }
文件的输入/输出
文件输入/输出的控制
问题: 多次读同一文件,每次从头读起,如何完成?
如何指向文件的结尾? 如何知道文件已结束?
解决 语句 myin.seekg(0) 和 myout.seekg(0) 将指向文件的开始。 方法 myin.seekg(0,ios::end) 和 myout.seekg(0,ios::end) 指向文件结尾
fileName.eof( ) = 0: 文件未到结尾 fileName.eof( ) = 1: 文件已到结尾
文件的输入/输出 例8:文件 输入中函数 eof( ) 的应用
#include<iostream.h> #include<fstream.h> void main( ) { int a; ifstream myin("file_from"); //定义用户自己的流对象myin,以及文件名file_from if( !myin) //判断是否可以打开文件,myin=0为不可以,myin=1为可以 { cout << "cannot open file: file_from"; } while( ! myin.eof( ) ) //包含文件输出流
用户自定义类型的输入/输出
例1:电话号码的输入/输出
#include <iostream.h> class PhoneNumber { friend ostream &operator << (ostream &, const PhoneNumber &); //重载输出运算符 friend istream &operator >> (istream &, PhoneNumber &); //重载输入运算符 private: char areaCode[4], exg[4], line[5]; }; ostream &operator << (ostream &output, const PhoneNumber &num) { output << num.areaCode << "- "<< num.exg << "-" << line; return output; // 此语句的目的:实现cout << a << b << c; } istream &operator >> (istream &input, PhoneNumber &num) { input.getline(num.areaCode,4); //读入地区号 input.ignore( ); //跳过横线input.getline(num.exg,4); input.getline(num.line,5); return input; // 此语句的目的:实现 in >> a >> b >> c; }
{
myin >> a ; //从文件中读数据
cout << a << endl;
}
myin.close( ); } //关闭文件
文件的输入/输出 例9:seekg( ) 的应用: 从文件中读两次数据
#include<iostream.h>
#include<fstream.h>
void main( ) { int a;
if( !myout) { cout << "cannot open file: test"; } myout << 10 << " " << 123.45 << " " << "object\n"; //向文件写数据 myout.close( ); //关闭文件 //判断是否可以打开文件,myout=0为不可以,myout=1为可以
定义流对象与打开文件
方法一:
定义流对象与打开文件由两条语句完成 ofstream myout; //定义流对象
myout.open(“myfile ”, ios::out, 0); //打开文件
myout << “Write some words in myfile ”; //向文件写数据
方法二:
定义流对象与打开文件由一条语句完成 ofstream myout(“myfile ”, ios::out, 0); //定义流对象和打开文件 myout << "Write some words in myfile "; //向文件写数据
2
输入/输出流库
输出与输入
• 用户自定义类型的输入/输出
• 文件的输入/输出
用户自定义类型的输入/输出
自定义输入/输出类型的目的 使用户能使用简洁、有效、便利的方法输入/输 出特殊结构的数据, 如:电话号码:025-3498888 三维点的坐标:(1,2,3)
实现自定义输入/输出类型的手段 通过对输入 (» )和输出(« )运算符的重载, 定义特殊的输入/输出结构
}
文件的输入/输出 例6:从文件test中读入一个整数、一个符点数、一个字符和一个字符串
#include<iostream.h>
#include<fstream.h> void main( ) { char ch; if( !myin) { int a; float b; char *str=new char[80]; //判断是否可以打开文件,myin=0为不可以,myin=1为可以 ifstream myin("test"); //定义用户自己的流对象myin,以及文件名test //包含文件输出流
#include<iostream.h> #include<fstream.h> void main( ) { char ch; ifstream myin("file_from"); //定义用户自己的流对象myin,以及文件名file_from if( !myin) //判断是否可以打开文件,myin=0为不可以,myin=1为可以 { cout << "cannot open file: file_from"; } ofstream myout("file_to"); //定义用户自己的流对象myout,以及文件名file_to //包含文件输出流
相关文档
最新文档