选择题
以下程序企图把从键盘终端输入的字符输出到名为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
【答案解析】本题考核文件的打开。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++的打开模式,所以产生调用错误。