Удаление пробелов из строки

82
27 февраля 2022, 19:10

Как удалить все пробелы из строки

string s="abc         def g ";
//
cout<<s;

чтобы получилось abcdefg?

Answer 1

Ну, берем шаблон

{
    string s = "abc     def   g  ";
    // Тут должен располагаться соответствующий код
    cout << s << endl;
}

Тогда навскидку...

1.

string s = "abc     def   g  ";
string v;
for(char c:s) if (c != ' ') v += c;
s = v;
cout << s << endl;

2.

string s = "abc     def   g  ";
s.erase(remove(s.begin(),s.end(),' '),s.end());
cout << s << endl;

3.

string s = "abc     def   g  ";
string v;
copy_if(s.begin(), s.end(),back_inserter(v),[](char c){ return c != ' ';});
s = v;
cout << s << endl;

4.

string s = "abc     def   g  ";
// Почти на грани фола :)
char * b = s.data();
for(char *e = b; *e; ++e)
    if (*e != ' ') *b++=*e;
*b = 0;
s = s.data();
cout << s << endl;

5.

string s = "abc     def   g  ";
s.erase(remove_if(s.begin(),s.end(),isspace),s.end());
cout << s << endl;

6.

string s = "abc     def   g  ";
// Только для C++20-совместимого компилятора
erase(s,' ');
cout << s << endl;

Update

Стало интересно, какой метод самый быстрый. Шестой проверить негде - VC++ 2017, так что проверял первые пять на строках в 20 миллионов символов с половиной пробелов, усреднение по 40 отдельным экспериментам. Использование перемещения при присвоении s = move(v) вместо s = v ничего не улучшило.

Метод     Время, мс      s = move(v)
  1       90.5 ± 2.5     89.4 ± 3.0
  2       64.4 ± 0.5
  3       86.8 ± 1.2     90.7 ± 2.8
  4       71.6 ± 1.0
  5      113.7 ± 1.4
READ ALSO
Вывести совпадения Laravel + MySql

Вывести совпадения Laravel + MySql

Как вывести совпадения для пользователя -user_i = 1Нужно вывести пользователей, которых лайкнул пользователь 1 и те пользователя, которые лайкнули...

90
Как сделать автоматический рестарт mariadb-10.3 в контейнере Docker при падении?

Как сделать автоматический рестарт mariadb-10.3 в контейнере Docker при падении?

Есть БД установленная в контейнере докер, бывает она падает, как можно отслеживать это дело и рестартить ее автоматически? Система Centos панель...

132
Скрыть токен telegram-бота в открытом коде

Скрыть токен telegram-бота в открытом коде

Необходимо выложить код telegram-бота на GitHubКаким образом можно скрыть его токен?

135