C++ 为读线缓冲区提供初始文本

C++ 为读线缓冲区提供初始文本,c++,readline,default-value,C++,Readline,Default Value,在readline缓冲区中,我想提供一个用户可以编辑的初始值。这可以是默认值,也可以是已保存到我的数据库中的字段的旧值。输入的值不应添加到读线历史记录中,因为它只是“数据”而不是命令 从这里和互联网上的示例中,我了解到此代码应该可以完成以下工作: char *deftext; int MatCustom::set_deftext () { // cout << "set_deftext called ... deftext: " << def

在readline缓冲区中,我想提供一个用户可以编辑的初始值。这可以是默认值,也可以是已保存到我的数据库中的字段的旧值。输入的值不应添加到读线历史记录中,因为它只是“数据”而不是命令

从这里和互联网上的示例中,我了解到此代码应该可以完成以下工作:

char *deftext;

int MatCustom::set_deftext ()
{
    // cout << "set_deftext called ... deftext: " << deftext << endl;
    if (deftext)
    {
        // cout << "inserting..." << endl;
        rl_insert_text(deftext);
        // rl_line_buffer = deftext;
        // cout << rl_stuff_char('J') << endl;
        rl_redisplay();

        deftext = (char *)NULL;

        rl_startup_hook = (rl_hook_func_t *)NULL;
        // rl_pre_input_hook = (rl_hook_func_t *)NULL;
    };
    return 0;
}

string MatCustom::getlineWithoutHistory(const string &field) {
    string returnString;
    const char *buffer;
    char *cstr = new char[field.length() + 1];
    strcpy(cstr, field.c_str());

    deftext = cstr;
    // cout << "Deftext in getLineWithoutHistory: " << deftext << endl;
    rl_startup_hook = set_deftext;
    // rl_pre_input_hook = set_deftext;

    buffer = :: readline("");

    if (buffer != nullptr) {
        returnString = buffer;
    } else {
        returnString = "";
    }
    free((void *) buffer);
    delete [] cstr;

    return returnString;
}

编辑到提供的值(原始值)。

请尝试创建一个显示给我们。是否
MatCustom::set_deftext
a
static
成员函数?相应地编辑了我的问题。
input = MatCustom::getlineWithoutHistory(rawValue);