Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
phoenixxt
0 / 0 / 0
Регистрация: 05.05.2015
Сообщений: 2
#1

Работа со string, который под вектором - C++

05.03.2016, 18:42. Просмотров 158. Ответов 3
Метки нет (Все метки)

Не могу никак понять как удалить символ из строчки, которая является элементом вектора. Честно гуглил и в русском, и в английском интернете, но найти информацию по работе с подстроками строк, которые элементы вектора не смог. Не исключён вариант того, что плохо искал, конечно... В общем, вот пример того, как я пытался мыслить:
C++
1
2
3
4
5
6
7
8
9
10
for (auto i = a.begin(); i != a.end(); ++i)
    {
        h = *i;
        for (int j = 0; j != h.size(); ++j)
          if ((h[j] == ',') || (h[j] == '.') || (h[j] == '?') || (h[j] == '!'))
          {
            h.erase(j,1);
            *i = h;
          }
    }
Где, a - vector<string>, h - string.
Также пробовал с помощью range for
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2016, 18:42     Работа со string, который под вектором
Посмотрите здесь:

C++ Работа с вектором
C++ Не правильная работа memcpy с вектором - параметром функции
Работа с вектором C++
Разработать класс String, который в дальнейшем будет использоваться для работы со строками. C++
Разработать класс String, который в дальнейшем будет использоваться для работы со строками C++
C++ String, который не дружит с пробелами
C++ Работа с вектором из класса
Работа с вектором C++
C++ Выделение памяти под string (разъяснения)
Использование переменной под string в функциях C++
C++ Разработать класс String, который в дальнейшем будет использоваться для работы со строками
Корень под корнем, который под корнем, который в свою очередь под корнем., под корнем C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sab1ch
BrainOverflow
123 / 127 / 41
Регистрация: 31.03.2013
Сообщений: 556
05.03.2016, 18:53     Работа со string, который под вектором #2
phoenixxt, удалить символы, которые указаны в условии? Если да, то, честно говоря, я создал строку, инициализировал ей вектор и вывел его. Или что-то другое нужно? (Правда, если много символов одних и тех же поставить в ряд, то они все не удалятся)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    string h = "Pr.iv,e?t";
    vector<string> a{h};
 
    for (auto i = a.begin(); i != a.end(); ++i)
    {
        h = *i;
        for (int j = 0; j != h.size(); ++j)
            if ((h[j] == ',') || (h[j] == '.') || (h[j] == '?') || (h[j] == '!'))
            {
                h.erase(j, 1);
                *i = h;
            }
    }
    for (auto &i : a)
    {
        cout << i << ' ';
    }
nd2
1546 / 1274 / 430
Регистрация: 29.01.2016
Сообщений: 3,943
05.03.2016, 19:03     Работа со string, который под вектором #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
    std::vector <std::string> a;
    a.push_back("1111, 111!");
    a.push_back("22222? wer.");
    a.push_back("3., wer!&?.");
    
    std::copy(a.begin(), a.end(), std::ostream_iterator <std::string>(std::cout, "\n"));
 
    for (auto i = a.begin(); i != a.end(); ++i)
    {
        for (auto j = (*i).begin(); j != (*i).end(); )
        {
            if (*j == ',' || *j == '.' || *j == '?' || *j == '!')
            {
                j = (*i).erase(j);
            }
            else
                ++j;
        }
    }
    std::cout << std::endl;
    std::copy(a.begin(), a.end(), std::ostream_iterator <std::string>(std::cout, "\n"));
 
    system("pause");
Миниатюры
Работа со string, который под вектором  
phoenixxt
0 / 0 / 0
Регистрация: 05.05.2015
Сообщений: 2
05.03.2016, 19:14  [ТС]     Работа со string, который под вектором #4
Всем спасибо, разобрался! Оказывалось, что проблема у меня была немного в другом. А отдельно от остальных функций, само удаление протестировать я не додумался, идиот))
Yandex
Объявления
05.03.2016, 19:14     Работа со string, который под вектором
Ответ Создать тему
Опции темы

Текущее время: 23:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru