在用 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/