Удалить подстроку из строки на основе нового разделителя строк - PullRequest
0 голосов
/ 26 января 2020

Я пытаюсь написать визуальную программу в реальном времени, где текст появляется на экране, например, эффект от набора текста. Я хочу иметь возможность удалить первую строку текста на основе символа новой строки ('\ n') , когда высота текста достигает определенной точки.

Как бы вы удалили строку из абзаца на основе новой строки?

Я пытаюсь использовать:

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

1 Ответ

1 голос
/ 26 января 2020

Вы можете использовать функцию-член std::string s find, чтобы найти положение первого \n, а затем его функцию erase, чтобы стереть все char s с begin() до (и включая) найденного положение.

Пример:

#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;
}

Вывод:

----- before ----
hello
world
this
is
fun
----- after ----
world
this
is
fun
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...