把一个字符串的向量不断地移到一个位置C++ 我正在为C++中的一个类编写简单的文本编辑器。它使用字符串的std::vector让用户插入文本。行基本上是插入文本的新行,列是光标当前所在的位置

把一个字符串的向量不断地移到一个位置C++ 我正在为C++中的一个类编写简单的文本编辑器。它使用字符串的std::vector让用户插入文本。行基本上是插入文本的新行,列是光标当前所在的位置,c++,string,vector,C++,String,Vector,当用户插入新行时,它应该将其下方的任何文本向下移动一行。从现在起,我可以将当前行上的文本向下移动一行,但下面的所有文本都会一直保留,直到光标碰到这一行为止。这是我正在执行的当前insertNewLine代码 void Editor::insertNewLine() { std::string currLine = lines[row]; size_t tempSize = currLine.size(); int lengthOffset = getSubstringOf

当用户插入新行时,它应该将其下方的任何文本向下移动一行。从现在起,我可以将当前行上的文本向下移动一行,但下面的所有文本都会一直保留,直到光标碰到这一行为止。这是我正在执行的当前insertNewLine代码

void Editor::insertNewLine()
{
    std::string currLine = lines[row];
    size_t tempSize = currLine.size();
    int lengthOffset = getSubstringOffset(tempSize, column);
    std::string cutTemp = currLine.substr(column, lengthOffset); // our string for the new line
    lines[row].erase(column); // erase the line we are shifting down
    // after incrementing, row and amount of lines, initialize the new row
    numberOfLines++;
    lines.push_back("");
    row++;
    column = 1;
    lines[row] += cutTemp; // insert substring into new line
}
在我的代码中,我的子字符串方法工作得很好,如果我想插入的行下面没有任何文本,那么该方法本身就可以工作。但是,如果我决定用文本插入新行,在一行上方会出现|表示光标:

Before

Line 1. Hello
Line 2. |w
Line 3. orld

After inserting a new line at line 2.

Line 1. Hello
Line 2. 
Line 3. |orldw
Line 4. 
以下是技术上应该发生的事情:

Before

Line 1. Hello
Line 2. |w
Line 3. orld

After inserting a new line at line 2

Line 1. Hello
Line 2. 
Line 3. |w
Line 4. orld

是否有一些简单/快速的方法将向量中的每个字符串元素经过某一行向下移动一行?它对空行也有效吗?

假设每一行都是向量中的一个单独条目,只使用它有什么不对?该功能将自动处理移位。行。插入行。开始+行@修复它的用户657267没有意识到push_back没有处理所有这些。谢谢@Alex为什么要推回手柄移动其他元件?你正在推到向量的末尾,后面没有元素@user657267你是对的,我没有想到这一点:|顺便说一句,每当我通过执行row-,移动到一个空的行时;或者通过执行row++,从空行向下移动;我得到这个错误:终止时出现std::out_of_range:basic_string类型的未捕获异常。知道为什么吗?