11.c/c++程序员面试宝典-文件输入与输出
有3种流类对象可以用来处理文件,分别是ifstream、ofstream和fstream。ifstream表示可以读取的文件流,ofstream表示可以写入的文件输出流,fstream表示可以读写的文件流。
文件流有一些重要的属性,比如长度、开头、结尾、当前位置等。这些属性允许在文件中浏览,获取需要的文件部分,或者改写文件的指定区域等。
面试题71 如何读取一个文件***
分析:在c++中,读取文件要使用iostream头文件,iostream是fstream的基类。具体实现要求如下:
(1)必须包含头文件iostream。
(2)头文件iostream定义了一个用处理输入的istream类。
(3)头文件iostream声明了一个名为cin的istream变量(对象)。
(4)必须指明名称空间std;例如为引用元素cin,必须使用编译指令using或前缀std::。
另外,可以结合使用cin和操作符<<来读取各种类型的数据。还可以使用cin和get()方法来读取一个字符,使用cin和getline()来读取一行字符。也可以结合使用cin和eof()、fail()方法来判断输入是否成功。对象cin本身被用作测试条件时,如果最后一个读取操作成功,它将被转换为布尔值true,否则被转换为false。读取文件的示例代码如下:
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
void main()
{
char ch;
fstream openfile("F:\\vc\\Luo.txt",ios::out); //可以读写的文件流对象
while(openfile.eof())
{
cout<<"file is not open"<<endl;
exit(1);
}
while(openfile.eof()) //判断是否到了结尾
{
openflie.get(ch);
cout<<ch;
}
openfile.close(); //关闭释放资源
}
【答案】在c++中,读取文件使用iostream头文件内的相关方法。iostream是fstream的基类。
面试题72 文件输入输出有哪几种方式***
分析:fstream头文件定义了3种支持文件I/O的类型,如下所示:
(1)ifstream:由istream派生而来,提供读文件的功能。
(2)ofstream:由ostream派生而来,提供写文件的功能。
(3)fstream:由iostream派生而来,提供读写同一个文件的功能。
这些类型都由相应的iostream类型派生而来,这个事实意味着编程者已经知道使用fstream类型需要了解的大部分内容了。特别是,可使用I/O操作符(<<和>>)在文件上实现格式化的I/O,而且在前面章节介绍的条件状态也同样适用于fstream对象。fstream类型除了继承下来的行为外,还定义了两个自己的新操作open和close,以及形参为要打开的文件名的构造函数。fstream、ifstream或ofstream对象可调用这些操作,而其他的I/O类型则不能调用。
一个文件写入的示例代码如下:
#include<fstream>
using namespace std;
int a(void)
{
return 110;
}
int main(void)
{
ofstream oftest;
char filename[16]="c:\\a.txt"; //定义文件路径
oftest.open(filename,ostream::app); //以添加模式打开文件
oftest<<a();
oftest.close(); //关闭文件
oftest.clear(); //清理释放资源
return 0;
}
【答案】c++定义了ifstream、oftream和fstream3种类型以用来支持文件的输入输出。