问题 单项选择题

以下程序企图把从键盘终端输入的字符输出到名为abc.txt的文件中,当从终端读到字符’#’时,结束输入和输出操作。但该程序有错。
#include <iostream>
#include <fstream>
using namespace std;
int main()

ofstream ofile; char ch;
ofile.open("d:\\abc.txt", ’W’);
do
cin>>ch;
ofile.put(ch);
while(ch!=’#’);
ofile.close();
return 0;

程序出错的原因是( )。

A.成员函数open调用形式错误

B.输入文件没有关闭

C.成员函数put调用形式错误

D.对象ofile定义错误

答案

参考答案:A

解析: 本题考核文件的打开。C++中,可以在定义文件流对象的同时打开文件,也可以在定义文件流对象以后用open()函数打开文件。可以通过构造函数或open函数的第2个参数,确定文件的打开模式。打开模式用下列常量表示:
ios_base::app 为添加数据而打开(总是在文件尾部写);
ios_ase::binary 作为二进制文件打开:
ios_ase::in 为输入而打开:
ios_ase::out 为输出而打开;
ios_base::tmnc 若文件存在,截为空文件;
ios_base::ate 打开时定位于文件尾。
题中成员函数open()的第2个实参不符合C++的打开模式,所以产生调用错误。

单项选择题
多项选择题