Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 29.01.2014
Сообщений: 30
1

STL. Удаление крайних символов

06.02.2014, 08:14. Показов 971. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую.
Нужно сделать функцию, который будет удалять крайние символы у строки.
C++
1
void remove_side_chars(std::string& str, std::string const& chrs);
Т.е: '##hello world!#####' в итоге превратился в 'hello word' (удалили крайние решетки)

Хочу посмотреть вариант максимально извращенный со STL.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.02.2014, 08:14
Ответы с готовыми решениями:

Удаление list STL
Из списка, содержащего 100 тыс. элементов, удалить все элементы путем многократного удаления...

c++ stl удаление елемента из list
for(std::list<gun>::iterator iter = Gun.begin(); iter != Gun.end(); iter++) { iter->controle();...

stl, удаление элементов в list
Всем доброго времени суток! прошу помочь в решении задачи: Из числовой последовательности найти...

Удаление элемента списка list.STL
Всем привет! Ребята, не могу понять почему у меня не получается удалить конкретный элемент списка....

3
112 / 103 / 12
Регистрация: 01.05.2013
Сообщений: 603
06.02.2014, 11:49 2
http://stackoverflow.com/quest... -stdstring

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
include <algorithm> 
#include <functional> 
#include <cctype>
#include <locale>
 
// trim from start
static inline std::string &ltrim(std::string &s) {
        s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun<int, int>(std::isspace))));
        return s;
}
 
// trim from end
static inline std::string &rtrim(std::string &s) {
        s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::ptr_fun<int, int>(std::isspace))).base(), s.end());
        return s;
}
 
// trim from both ends
static inline std::string &trim(std::string &s) {
        return ltrim(rtrim(s));
}
C++
1
2
3
4
5
6
7
8
9
#include <boost/algorithm/string.hpp>
using namespace std;
using namespace boost::algorithm;
 
string str1(" hello world! ");
trim(str1);
 
// str1 is now "hello world!"
// Use trim_right() if only trailing whitespace is to be removed.
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
06.02.2014, 12:00 3
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
 
void remove_side_chars(std::string& str, std::string const& chrs)
{
    std::size_t b = str.find_first_not_of( chrs );
    
    if( b == std::string::npos )
    {
        str = "";
    }
    else
    {
        std::size_t e = str.find_last_not_of( chrs );   
        std::size_t len = e-b+1;
        str.assign( str, b, len );
    }
}
 
int main() {
    
    std::string s = "#!##hello##@###";
    
    remove_side_chars( s, "#@!" );
    
    std::cout << s << std::endl;
    
    return 0;
}
http://ideone.com/w6JGXa
1
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
06.02.2014, 12:22 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
#include <boost/algorithm/string/trim.hpp>
 
int main()
{
   std::string s = "##hello world!#####";
 
   boost::algorithm::trim_left_if(s, boost::algorithm::is_any_of("#"));
   std::cout << s << "\n";
 
   boost::algorithm::trim_right_if(s, boost::algorithm::is_any_of("#"));
   std::cout << s << "\n";
 
   return 0;
}
Добавлено через 1 минуту
Или один раз:
C++
1
boost::algorithm::trim_if(s, boost::algorithm::is_any_of("#"));
0
06.02.2014, 12:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2014, 12:22
Помогаю со студенческими работами здесь

Алгоритмы STL Удаление элементов в векторе
Банальный вопрос. vector&lt;int&gt; В нем разные числа могут повторяться. Хочу удалить заданное...

Удаление элементов из односвязного списка (STL)
Здравствуйте, уважаемые форумчане! Помогите, пожалуйста, с контейнером forward_list&lt;int&gt; (именно с...

Удаление елемента списка с использованием итератора. STL
Надо удалить из списка елементы, значение которых входит в некий диапазон. Я хочу использовать для...

Удаление элементов вектора с использованием итератора в STL
Задача: создать программу, в которую пользователь может ввести свой список из 50 названий игр, а...

STL, istream_iterator, в вектор считывается неверное количество символов
Имеется программа, в которой происходит посимвольное чтение из файла в вектор: #include...

Удаление комментариев из текста программы с использованием STL, ошибка при выполнении
Здравствуйте решал задачу с использованием STL из книги Страуструпа 6.22 возникла проблема...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru