11.c/c++程序员面试宝典-文件输入与输出

2021-12-03
5

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种类型以用来支持文件的输入输出。



评论