假设文件 data.txt 的内容如下:
Blue Sky执行下面程序后,输出结果是( )。
int main() {
ifstream fin("data.txt");
string a, b;
fin >> a >> b;
cout << b << "-" << a;
fin.close();
return 0;
}看到 fin >> a >> b; 先想到 >> 对 string 是空格分隔读取,第一个词进 a,第二个词进 b。输出 b << "-" << a 就是反序拼接。
选项 C 和 D 是常见错误,学生容易把 >> 当成整行读取,或者忽略输出顺序。选项 A 是顺序输出,没加连字符。
本题考查 GESP 四级 C++ 第 3 章"文件与流"的 ifstream 输入操作,以及第 2 章"字符串"的流式读取。命题人卡住的是"流式读取是单词级而非行级"这一基础认知。
文件内容只有两行:
Blue Sky执行 fin >> a >> b; 时:
>> 遇到 "Blue",遇到空格停止,a = "Blue">> 遇到 "Sky",遇到换行停止,b = "Sky"输出 b << "-" << a 即 "Sky" + "-" + "Blue" = Sky-Blue