在下面的 C++ 代码中,将对 1.txt 文件写入 hello。( )
ifstream filein;
ofstream fileout;
filein.open("1.txt");
fileout<<"hello";这题考的是文件流‘先打开后使用’的铁律。拿到题别急着看输出语句,先扫一眼所有文件对象——filein 调用了 open,fileout 却光声明没打开。记住:未打开的 ofstream 是个哑巴,<< 再写也白搭,所以选 B。
考生最容易掉进‘看到 ofstream 和 << 就以为写了’的陷阱,或者被代码里那句 filein.open 带偏,以为题目在问 filein 的操作。其实命题人就是专门挖这个坑:把打开和写入拆开,让你必须逐行核对状态。
GESP 四级‘文件操作’模块,核心就是考你懂不懂文件流必须显式打开才能用。命题人专门挖掉了‘不打开就写’这个低级错误,卡住那些只会背‘ifstream 读、ofstream 写’口诀的考生,让他们把文件流当成普通变量用。
看到题先找所有文件变量:代码里有 ifstream filein 和 ofstream fileout 两个对象。接着核对每个对象的状态:filein 调用了 open(),但 fileout 从头到尾没碰过 open()。关键观察:C++ 里文件流必须显式打开才能使用,未打开的流所有读写操作都无效。推理链条:fileout 没打开 → fileout << "hello" 是空操作 → 文件内容不变 → 题目问“写入 hello”不成立。这一类题的通法:先找所有文件变量,再核对每个变量是否调用了 open(),没调用的直接判错。