我的应用程序使用 std::cin
流读取用户输入。
在一个地方,我想提供默认输入并让用户按原样接受它(通过按回车键)或在继续之前修改它(通过使用退格键删除旧字符并添加新文本)。
我知道可以将字符直接放入 cin.rdbuf
中,但这并不是我想要实现的。
我想在等待用户输入时将字符放入控制台窗口中控制台光标所在的位置,并且在用户接受它们之前不要阅读它们。用户还应该能够删除它们并编写自己的文本。
是否可以使用 cin
来实现这样的事情,还是我必须通过读取单个字符并重新绘制控制台内容来模拟它?
最佳答案
不,std::cin
无法完成类似的事情。它的读缓冲区直接从标准输入中读取。标准输入是一个“熟”的字符流。所有编辑都完全由操作系统的终端控制台处理,按下 Enter
会导致应用程序的 std::cin
读取输入的文本。
完成此操作的传统方法是简单地在提示本身中指示默认输入值,并在输入为空时使用默认值,例如:
std::string buffer;
std::cout << "What color is the sky [blue]? ";
std::getline(std::cin, buffer);
if (buffer.size() == 0)
buffer="blue";
关于c++ - 提供 cin 输入的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39736176/