考虑使用"Microsoft / C++优化编译器版本19.28.29913 for x86“在Windows 10上编译的这个x86程序
int main() {
string input;
getline(cin, input);
cout << input << "\n";
}如果输入"^D“(按Ctrl+D生成),程序将打印"♦”(钻石)。如果输入"^L“(按Ctrl+L生成),程序将生成"♀”(女性符号)。到现在为止还好。
现在考虑一下类似的程序:
int main() {
string input;
getline(cin, input);
cout << input << "\n";
istringstream sin{ input };
char token;
sin >> token;
cout << token << "\n";
}如果输入"^D“(按下Ctrl+D生成),程序将打印"♦”(钻石)两次。但是,如果我输入"^L“(按下Ctrl+L生成),程序只生成"♀”(女性符号),只有一次。为什么?
发布于 2021-03-24 16:51:33
Ctrl-L对应于ASCII 12,它是表单提要。这可能会清除终端屏幕。
因此,如果屏幕通过打印一次而被清除,那么第二次打印它将再次清除屏幕并删除以前打印的任何内容。
https://stackoverflow.com/questions/66785152
复制相似问题