如何在 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 并不总是如您所想。它不是 "the output to the terminal" - 它可以输出到文件,甚至打印机。在打印机上四处移动光标不会执行您可能希望它执行的操作。
因此,您可以尝试打印退格字符 (\b) 并查看会发生什么,但更好的办法是获得一个终端库 - 如 ncurses;这将使您更好地控制光标。
在使用 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 并不总是如您所想。它不是 "the output to the terminal" - 它可以输出到文件,甚至打印机。在打印机上四处移动光标不会执行您可能希望它执行的操作。
因此,您可以尝试打印退格字符 (\b) 并查看会发生什么,但更好的办法是获得一个终端库 - 如 ncurses;这将使您更好地控制光标。