繁体   English   中英

输入为 ^L 时的奇怪行为

[英]Strange behavior when input is ^L

考虑使用“Microsoft (R) C/C++ Optimizing Compiler Version 19.28.29913 for x86”在 Windows 10 上编译的 C++ 程序

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产生),程序只产生一次“♀”(女性符号)。 为什么?

Ctrl-L对应 ASCII 12 ,即换页。 这可能会清除终端屏幕。

因此,如果通过打印一次来清除屏幕,那么第二次打印将再次清除屏幕并删除之前打印的所有内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM