[英]Cannot clear Input Stream by cin.ignore() and cin.clear()
[英]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.