我正在尝试制作一个基本的文本编辑器,但是在使用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> globalDocument
是LineInfo
结构的向量,因此必须将push_back LineInfo
对象放入其中:
void handleTextLine( const string& s, int lineNumber2) {
LineInfo li;
li.lineNumber = lineNumber2;
li.text = s;
globalDocument.push_back(li);
}
或者,使用struct初始化语法:
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/