2

我正在尝试创建一个简单的文本编辑器。我需要使用列出的 void 函数。我无法更改参数。我可以调用第一个 void 函数 open(file) 但不能调用 insert 命令。我通过使用重载运算符打印结构来测试 open 函数。

 int main() 
 {
     editor_file file;
     string command;
     string insert;

     cout << "Welcome to TextEditor. Please enter a filename: ";

     open(file);

     cout << file;
     cout << '>';
     cin >> command;


     if(command == insert)
     {   
         insert(file);  // error: no match for call to '(std::string) (editor_file&)'
     }

     cout << file;

    return 0;
}

单独文件中的 void 函数

void open(editor_file &file)
{

    string line;
    string filename; 
    ifstream fin(filename.c_str());
    do 
    {
        cin >> filename;       
        fin.open(filename.c_str());
        file.name = filename; 

        if(fin.fail())
        {
            cout << "Invalid File. ";
            cout << "Please enter another file name: ";
        }
    }while (fin.fail());

    getline(fin, line);

    while(fin)
    {
        file.data += line + '\n';
        getline(fin, line);
    }

}


void insert(editor_file &file)
{

    char character;
    cin >> character;
    string info = file.data;

    info.insert(file.cursor, character);
}

头文件中的结构

struct editor_file
{
    std::string name;

    std::string data;

    int cursor;

    bool is_open;

    bool is_saved;

    editor_file():cursor(0),is_open(false), is_saved(true) {}
};
4

1 回答 1

3

尝试重命名您的

字符串插入

像这样的东西

字符串 strInsert

这是因为您不应该对变量和函数使用相同的名称!

于 2013-08-14T20:00:17.267 回答