c++ - 将数据加载到结构 vector 中

标签 c++ vector struct

我正在尝试制作一个基本的文本编辑器,但在使用 push_back 将数据加载到结构中时遇到了问题。

这是结构

struct LineInfo
{       
    int lineNumber;         
    string text;            
};

这是主程序

vector<LineInfo> globalDocument;

int main()
{
    cout << "COSC 120 line editing system now running." << endl << endl;
    bool done = false;
    while ( !done )
    {
        cout << "> ";
        string inputBuffer;
        getline( cin, inputBuffer );
        int lineNumber;
        splitLineNumberAndText( inputBuffer, lineNumber );
        ptr.push_back( &lineNumber );
        if ( lineNumber > 0 )
            handleTextLine( inputBuffer, lineNumber );
        else
            done = handleSystemCommand( inputBuffer );
    }

    cout << endl << "COSC 120 line editing system has shut down. Bye." << endl;
    return 0;
}

这从输入中接收行号和文本,然后将其拆分为一个 int 和一个字符串,并将其发送到 handleTextLine

这是函数

void handleTextLine( const string& s, int lineNumber2 )
{
    globalDocument.lineNumber.push_back(lineNumber2);
    globalDocument.text.push_back(s);
}

最佳答案

vector<LineInfo> globalDocumentLineInfo 的 vector 结构,所以你必须 push_back LineInfo放入其中的对象:

void handleTextLine( const string& s, int lineNumber2) {
    LineInfo li;
    li.lineNumber = lineNumber2;
    li.text = s;
    globalDocument.push_back(li);
}

或者,使用结构初始化语法:

void handleTextLine( const string& s, int lineNumber2) {
    LineInfo li = {lineNumber2, s};
    globalDocument.push_back(li);
}

如果为 LineInfo 声明一个构造函数,您可以获得更紧凑的插入代码:

struct LineInfo {

    // Default constructor
    LineInfo() : lineNumber(0) {}

    // Constructor taking 2 arguments
    LineInfo(int n, string s) : lineNumber(n), text(s) {}

    int lineNumber;
    string text;
};

void handleTextLine( const string& s, int lineNumber2) {
    globalDocument.push_back(LineInfo(lineNumber2, s));
}

关于c++ - 将数据加载到结构 vector 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5863964/

相关文章:

c++ - Swig C++ : Interfacing vector<Class object *>

C++ 仿函数和零

c++ - asio 分配示例中的 ‘typename’ 是什么意思

r - 使用 Leaflet 在数据帧或向量中绘制经纬度信息

c++ - 使用数组乘以矩阵?

c++ - 创建一个新的 C++ 子 vector ?

vector - 如何在不切片的情况下解构向量?

c - 包含两个双指针的结构体,访问第二个双指针时出现段错误

c++ - BinaryNode 和 oldNode 未在此范围内声明

c - 如何将结构成员数组传递给C中的函数