【问题标题】:How to move cursor to end of text output after cin.clear() and cin.ignore()?如何在 cin.clear() 和 cin.ignore() 之后将光标移动到文本输出的末尾?
【发布时间】:2019-12-21 13:32:40
【问题描述】:

在用 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: 
  • '|'表示光标位置

【问题讨论】:

    标签: c++ io cout


    【解决方案1】:

    std::cout 并不总是你认为的那样。它不是“输出到终端”——它可以输出到文件,甚至是打印机。在打印机上移动光标不会做您希望它做的事情。

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

    【讨论】:

      猜你喜欢
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 2019-09-28
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多