C++ 基于新行分隔符从字符串中删除子字符串

C++ 基于新行分隔符从字符串中删除子字符串,c++,string,C++,String,我正在尝试编写一个实时可视化程序,其中文本显示在屏幕上,就像打字效果一样。当文本高度达到某一点时,我希望能够基于换行符('\n')分隔符删除第一行文本 如何根据换行符从段落中删除一行 我正在使用轮胎: myIncreasingString.erase(std::remove(myIncreasingString.begin(), myIncreasingString.end(), "/n"); 您可以使用std::stringsfind成员函数来查找第一个\n的位置,然后使用其erase函数来

我正在尝试编写一个实时可视化程序,其中文本显示在屏幕上,就像打字效果一样。当文本高度达到某一点时,我希望能够基于换行符('\n')分隔符删除第一行文本

如何根据换行符从段落中删除一行

我正在使用轮胎:

myIncreasingString.erase(std::remove(myIncreasingString.begin(), myIncreasingString.end(), "/n");

您可以使用
std::string
s
find
成员函数来查找第一个
\n
的位置,然后使用其
erase
函数来删除从
begin()
到(包括)找到的位置的所有
char
s

例如:

#include <iostream>
#include <iterator>
#include <string>

void remove_first_line(std::string& s) {
    if(auto idx = s.find('\n'); idx != std::string::npos) {
        s.erase(s.begin(), std::next(s.begin(), idx+1));
    }
}

int main() {  
    std::string text = "hello\nworld\nthis\nis\nfun\n";
    std::cout << "----- before ----\n";
    std::cout << text;
    remove_first_line(text);
    std::cout << "----- after ----\n";
    std::cout << text;
}

我忘了提到这个myIncreasingString在一个循环中添加了新字符。是否需要所有行都在一个
std::string
?如果是这样,
find
可用于查找第一个
\n
。如果没有,您可以将这些行存储在
std::list
std::vector
中,并在需要删除第一行时删除第一个元素。感谢您的回复,我已经存储了一个大字符串,我正在慢慢地用每个字符帧填充我的递增字符串。一旦屏幕上的文字达到一定高度,我想删除第一行并继续添加字符。
----- before ----
hello
world
this
is
fun
----- after ----
world
this
is
fun