提供 cin 输入的默认值

Providing default value of cin input

我的应用程序使用 std::cin 流读取用户输入。 在一个地方,我想提供默认输入并让用户按原样接受它(通过按回车键)或在继续之前修改它(通过使用退格键删除旧字符并添加新文本)。

我知道可以将字符直接放入 cin.rdbuf,但这并不是我想要实现的。 我想在等待用户输入时将字符放入控制台 window 控制台光标所在的位置,并且在用户接受它们之前不要阅读它们。用户也应该能够删除它们并编写自己的文本。

可以使用 cin 实现这样的事情吗?还是我必须通过读取单个字符并重新绘制控制台内容来模拟它?

不,std::cin 做不到这样的事情。它的读缓冲区直接从标准输入中读取。标准输入是 "cooked" 字符流。所有编辑完全由操作系统的终端控制台处理,按 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";