c++ - 如何在 cin.clear() 和 cin.ignore() 之后将光标移动到文本输出的末尾?

标签 c++ io cout

在用 std::cin.clear() 和 std::cin.ignore() 清除无效输入后,光标移动到 std::cout 打印的下一行的开头。我尝试在不同位置包含一个额外的 std::endl,但无济于事。

有没有办法强制光标到行尾?

提示

  do {

    std::cout << "Enter a number: ";

    if(!(std::cin >> number)) {
      std::cout << "Not a number. Try again..."<< std::endl;
      std::cin.clear();
      std::cin.ignore(10000, '\n');
    }

  } while (number != -1);

输出

Enter a number: |
Invalid input. Try again...
|Enter a number: 
  • '|'代表光标位置

最佳答案

std::cout 并不总是您认为的那样。它不是“输出到终端”——它可以输出到文件,甚至打印机。在打印机上四处移动光标不会执行您可能希望它执行的操作。

因此,您可以尝试打印退格字符 (\b) 并查看会发生什么,但更好的办法是获得一个终端库 - 如 ncurses;这将使您更好地控制光标。

关于c++ - 如何在 cin.clear() 和 cin.ignore() 之后将光标移动到文本输出的末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57504069/

相关文章:

c++ - 为什么规定临时对象必须有不同的地址?

c++ - 该程序已退出,代码为 0 (0x0)。 C++

php - 为 PHP 编写 C/C++ 绑定(bind)和库

java - 为什么 NIO FileChannels 从 InputStream/OutputStream 创建

multithreading - 将 IO::Async 与矢量化 STDIN 一起使用

c++ - 是否可以在各种失败情况下(例如异常)在程序终止之前自动刷新 std::cout

c++ - 为什么我的程序无法识别 C++ 循环内的 Cin?

c++ - 为什么我的程序不打印完美整数?

c++ - CppUnit 库充满 undefined reference ?

输入类型中的 PhP 命名空间