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