簡體   English   中英

在cin.clear()和cin.ignore()之后如何將光標移動到文本輸出的末尾?

[英]How to move cursor to end of text output after cin.clear() and cin.ignore()?

用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;。 這將使您更好地控制光標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM