Cin显示默认值

时间:2013-04-14 02:44:09

标签: c++ iostream default-value cin

使用C ++是否可以使用Cin语句为用户提供默认值,然后让他们退回他们想要更改的内容?例如:我给用户一个更改字符串名称的选项,我将名称输出到屏幕:“John Doe”,他们可以退格以将名称更改为“John Smith”。

2 个答案:

答案 0 :(得分:3)

对于此类功能以及更多功能,请查看GNU Readline或其中一项工作。它基本上是一个应用程序库,用于支持命令行编辑,使用熟悉的功能,如向上箭头重复以前的命令,编辑那些以前的命令,是的,您可以自定义呈现给用户的文本,然后用户可以使用相同的方式对其进行编辑可以在shell中使用的击键。

答案 1 :(得分:0)

我可能会疯狂,但这里是一个适用于Visual Studio 2012 Update 1的普通Windows解决方案。它模拟您想要输入的字符,这些字符应该保留在输入缓冲区中,直到它们准备好读取,然后读取输入,等待换行。

#include <iostream>
#include <string>
#include <windows.h>

void InsertDefaultName(const std::string &def) {
    HWND hwnd = GetConsoleWindow();
    for (char c : def) {
        SendMessage(hwnd, WM_CHAR, c, 0);
    }
}

int main() {
    std::cout << "Enter name: ";
    std::string name;

    InsertDefaultName("John Doe");
    std::getline(std::cin, name);

    std::cout << "You entered " << name << '\n';
}

值得注意的是,如果用户在进入InsertDefaultName()函数调用之前按住某个键,则可能无法完全正常工作。一个更强大的库肯定会更好,但是如果它没有一个全新的库就可以正常运行,那就在这里。