Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

Строки. Как найти в слове первый элемент? Второй элемент, последний элемент? - C++
как найти в слове первый элемент?Второй элемент,последний элемент.С помощью каких операторов это делается??

Как удалить нужный элемент из списка или заменить этот элемент на другой? - C++
Доброго времени суток, господа! Есть список: list&lt;double&gt; list1; Есть возможность добавить в начало или в конец списка елементы:...

удалить все строки, в которых каждый элемент попадает в заданный интервал - C++
помогите пожалуста составить программу!!!! в двумерном массиве, элементы которого- целые числа, произвести следующее действие: удалить...

Вычислить произведение элементов в столбцах с нечетным номером; удалить второй элемент первой строки - C++
Рябят выручайте!!! Помогите пожалуйста составить программу, в которой 1) организовать ввод квадратной матрицы размера nxn из целых...

Массив: Удалить строки заданного массива, в которых есть хотя бы один особый элемент - C++
Здравствуйте. Я только начал постигать язык С++ и остановился на одной задачи и не могу сдвинуться с места... Прочёл в 2-х книгах про...

Задача звучит так: Пользователь вводит строку символов, удалить из этой строки каждый 3-й по счёту элемент - C++
Если кто поможет, буду очень благодарен: Пользователь вводит строку символов, удалить из этой строки каждый 3-й по счёту элемент.

10
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 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());
1
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);
задать сразу несколько элементов для удаления?
0
DiffEreD
1441 / 778 / 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;
}
1
yoghurt92
375 / 346 / 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;
}
1
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
25.03.2013, 14:49 #6
yoghurt92, Удалит только цифры. Тогда уж так

C++
1
2
3
4
bool pred(char x)
{
   return !isalpha(x);
}
1
yoghurt92
375 / 346 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
25.03.2013, 14:53 #7
ForEveR, можно и так мой вариант тоже работает верно, спасибо
1
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() (приведите разные примеры, пожалуйста)
0
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
25.03.2013, 18:19 #9
Wladius, удаляются элементы не сначала, а только те элементы, которые не соответствуют данному предикату. Собственно, что вас не устраивает?
1
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
25.03.2013, 18:29  [ТС] #10
Дело в том, что символы удаляются до конца строки, а можно ли как-то сделать, чтобы они удалялись до определенного момента или символа?
0
yoghurt92
375 / 346 / 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;
}
1
25.03.2013, 19:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2013, 19:04
Привет! Вот еще темы с ответами:

Каждый элемент строки матрицы представить как приращение по отношению к минимальному элементу этой же строки - C++
Задание Каждый элемент строки прямоугольной матрицы представить как приращение по отношению к минимальному элементу этой же строки....

Как удалить элемент из массива? - C++
покажите пожалуйста пример с простым массивом и с динамическим....... ____________ зарание спс:)

Как удалить элемент из списка - C++
for(auto&amp;i:M) { getline(i.GetF(),str); if(i.GetF().eof()) M.remove(i); cout&lt;&lt;str&lt;&lt;&quot;\n&quot;; ...

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru