Как удалить все пробелы из строки
string s="abc def g ";
//
cout<<s;
чтобы получилось abcdefg
?
Ну, берем шаблон
{
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
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как вывести совпадения для пользователя -user_i = 1Нужно вывести пользователей, которых лайкнул пользователь 1 и те пользователя, которые лайкнули...
Есть БД установленная в контейнере докер, бывает она падает, как можно отслеживать это дело и рестартить ее автоматически? Система Centos панель...
Необходимо выложить код telegram-бота на GitHubКаким образом можно скрыть его токен?