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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 5.00
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
#1

Как удалить элемент из строки? - C++

25.03.2013, 14:09. Просмотров 2915. Ответов 10
Метки нет (Все метки)

В с++ как удалить элемент из строки типа

C++
1
string text;
При чем мне нужно удалить все символы, кроме букв, то есть есть ли такая функция, которая удалит все кроме букв или придется расписывать через if
И как вообще удалить элемент из строки, пожалуйста покажите разные способы, в данном конкретном случае работаю так
C++
1
2
for (int i = 0; i < text.size(); i++)
              {  cout << text[i];
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2013, 14:09     Как удалить элемент из строки?
Посмотрите здесь:

C++ Как удалить элемент из массива?
C++ удалить все строки, в которых каждый элемент попадает в заданный интервал
C++ как удалить элемент из связного списка
Задача звучит так: Пользователь вводит строку символов, удалить из этой строки каждый 3-й по счёту элемент C++
Вычислить произведение элементов в столбцах с нечетным номером; удалить второй элемент первой строки C++
Строки. Как найти в слове первый элемент? Второй элемент, последний элемент? C++
C++ Каждый элемент строки матрицы представить как приращение по отношению к минимальному элементу этой же строки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
25.03.2013, 14:18     Как удалить элемент из строки? #2
C++
1
text.erase(std::remove_if(text.begin(), text.end(), std::not1(std::ptr_fun(isalpha)), text.end());
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
25.03.2013, 14:27  [ТС]     Как удалить элемент из строки? #3
remove_if , not1 , ptr_fun - подчеркиваются красным (отсутствуют экземпляры шаблон функции итд)

Можно ли как-то при помощи
C++
1
text.erase(text.find('('), 1);
задать сразу несколько элементов для удаления?
DiffEreD
1427 / 764 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
25.03.2013, 14:44     Как удалить элемент из строки? #4
Заголовки подключите.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <algorithm>
#include <functional>
#include <string>
 
int main()
{
    std::string text = "Hel7lo w^or*l d 123";
    text.erase(std::remove_if(text.begin(), text.end(), std::not1(std::ptr_fun(isalpha))), text.end());
    std::cout<<text<<"\n";
    
    return 0;
}
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
25.03.2013, 14:48     Как удалить элемент из строки? #5
Wladius,

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
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
 
bool pred(char x)
{
    if(isdigit(x))
        return true;
    else
        false;
}
 
int main()
{
    string text = "Hel2l3o fr2ie4nd";
    cout << "text: " << text << '\n';
 
    text.erase(remove_if(text.begin(),text.end(), pred), text.end());
 
    cout << "text: " << text << '\n';
    
    cout << "\n\n";
    return 0;
}
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
25.03.2013, 14:49     Как удалить элемент из строки? #6
yoghurt92, Удалит только цифры. Тогда уж так

C++
1
2
3
4
bool pred(char x)
{
   return !isalpha(x);
}
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
25.03.2013, 14:53     Как удалить элемент из строки? #7
ForEveR, можно и так мой вариант тоже работает верно, спасибо
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
25.03.2013, 18:12  [ТС]     Как удалить элемент из строки? #8
Мне нужно удалить символы только в определенном слове (переменная n означает какое слово по порядку)
Я пытаюсь сделать таким образом:
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
int main () {
  
    string text;
    int count = 1, n;
    ifstream fi ("in.txt");
    cin>>n;
 
        while (!fi.eof() )
        {
            getline (fi,text);
            
        }
        fi.close();
    
        for (int i = 0; i < text.size(); i++)
              {  cout << text[i];
                     if(text[i]==' ')
                    {    count++;
                         
                         if (count==n)
                         {
                         }
                         }}
 
    cin.get();
    }
Добавлено через 1 час 57 минут
Или может кто-нибудь объяснить эту строку и как ее можно изменить, для того, чтобы удалялось начиная не с начала, а с конкретного места
C++
1
text.erase(remove_if(text.begin(),text.end(), pred), text.end());
что мне то есть написать вместо text.end() (приведите разные примеры, пожалуйста)
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
25.03.2013, 18:19     Как удалить элемент из строки? #9
Wladius, удаляются элементы не сначала, а только те элементы, которые не соответствуют данному предикату. Собственно, что вас не устраивает?
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
25.03.2013, 18:29  [ТС]     Как удалить элемент из строки? #10
Дело в том, что символы удаляются до конца строки, а можно ли как-то сделать, чтобы они удалялись до определенного момента или символа?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2013, 19:04     Как удалить элемент из строки?
Еще ссылки по теме:

C++ Как удалить элемент из динамического массива?
C++ Массив: Удалить строки заданного массива, в которых есть хотя бы один особый элемент
Как удалить элемент из списка C++
C++ Как удалить нужный элемент из списка или заменить этот элемент на другой?

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

Или воспользуйтесь поиском по форуму:
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
25.03.2013, 19:04     Как удалить элемент из строки? #11
Wladius, не знаю насколько хорошо написал, только учу stl, но так удаляет в определенном слове все цифры

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
29
#include "stdafx.h"
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
 
bool pred(char x)
{
    return !isalpha(x);
}
 
int main()
{
    string text("Hel2l3o fr2i3e4nd df2h3h");
    cout << "text: " << text << '\n';
 
    int n = 8;
    string::iterator pos;
    pos = find(text.begin() + n, text.end(), ' ');
    string str(pos ,text.end());
 
    text.erase(remove_if(text.begin() + n, pos, pred), text.end());
    text += str;
 
    cout << "text: " << text << '\n';
    
    cout << "\n\n";
    return 0;
}
Yandex
Объявления
25.03.2013, 19:04     Как удалить элемент из строки?
Ответ Создать тему
Опции темы

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