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

Удаления символов из строки - C++

Восстановить пароль Регистрация
 
i7ungvun
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 8
01.07.2013, 18:58     Удаления символов из строки #1
Доброго времени суток,в общем создалась проблема в написание программы,которая удаляет из строки все символы a и b,строку нужно ввести с клавиатуры,вроде как задача легкая,перепробовал множество вариантов,но всегда удаляет только до пробела,помогите,пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2013, 18:58     Удаления символов из строки
Посмотрите здесь:

Удаления со строки подстроку! C++
C++ Программа удаления из строки символов '0..9'
C++ Ошибка в функции удаления символов из строки
C++ Удалить конец строки символов. Ввести кол-во удаляемых символов , вывести результат ,String ,задачка,С++
C++ Дана строка, состоящая из M попарно различных символов. Вывести все перестановки символов данной строки.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
01.07.2013, 19:00     Удаления символов из строки #2
попробуйте по аналогии:
Сжать строку, удалив из нее все пробелы
i7ungvun
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 8
01.07.2013, 19:03  [ТС]     Удаления символов из строки #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
#include<iostream>
#include<vector>
#include<string>
using namespace std;
void main()
{
    vector<string>vec;
    string s;
    {
        cin>>s;
    vec.push_back(s);
    }
    
    for(int i=0;i<s.size();i++)
 
    {
        
        if(s[i]=='a')
            s.erase(i,1);
            if(s[i]=='b')
                s.erase(i,1);
            
    }
cout<<s;
}
вот что-то такое
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
01.07.2013, 19:07     Удаления символов из строки #4
i7ungvun, вектора зачем? Так не сойдёт?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <algorithm>
#include <string>
 
 
int main() {
   std::string string;
   std::getline(std::cin, string);
 
   std::string::iterator end = std::remove(string.begin(), string.end(), 'a');
   end = std::remove(string.begin(), end, 'b');
   string.erase(end, string.end());
 
   std::cout << string << std::endl;
}
i7ungvun
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 8
01.07.2013, 19:12  [ТС]     Удаления символов из строки #5
ну мы слегка по-другому пишем просто,не думаю,что примут такое,но всё равно спасибо,попробую что-нибудь по аналогии сделать.Но если ещё будут какие-нибудь другие варианты,буду рад.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
01.07.2013, 19:13     Удаления символов из строки #6
Цитата Сообщение от i7ungvun Посмотреть сообщение
ну мы слегка по-другому пишем просто,не думаю,что примут такое
Всмысле без алгоритмов (std::remove) ?
i7ungvun
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 8
01.07.2013, 19:16  [ТС]     Удаления символов из строки #7
да,такого нам не объясняли,если не сложно,можешь написать тоже самое,только более похоже на это
C++ (Qt)
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<vector>
#include<string>
using namespace std;
void main()
{
    vector<string>vec;
    string s;
    {
        cin>>s;
    vec.push_back(s);
    }
    
    for(int i=0;i<s.size();i++)
 
    {
        
        if(s[i]=='a')
            s.erase(i,1);
            if(s[i]=='b')
                s.erase(i,1);
            
    }
cout<<s;
}
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
01.07.2013, 19:18     Удаления символов из строки #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
 
 
int main() {
   std::string string;
   std::getline(std::cin, string);
 
   for (std::size_t i = 0; i != string.length(); ) {
      if ((string[i] == 'a') || (string[i] == 'b')) {
         string.erase(i);
      } else {
         ++i;
      }
   }
 
   std::cout << string << std::endl;
}
i7ungvun
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 8
01.07.2013, 19:24  [ТС]     Удаления символов из строки #9
gray_fox, ну если я не ошибаюсь,то это тоже удаляет только до пробела
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
01.07.2013, 19:27     Удаления символов из строки #10
i7ungvun, мм не тот erase, поправил:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
 
 
int main() {
   std::string string;
   std::getline(std::cin, string);
 
   for (std::size_t i = 0; i != string.length(); ) {
      if ((string[i] == 'a') || (string[i] == 'b')) {
         string.erase(i, 1);
      } else {
         ++i;
      }
   }
 
   std::cout << string << std::endl;
}
Добавлено через 37 секунд
http://ideone.com/0JiHdl
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2013, 19:57     Удаления символов из строки
Еще ссылки по теме:

Создать контейнер класса с методами включения и удаления строки, очистки текста, подсчета количества символов C++
C++ Получить из строк новую строку, содержащюю первые N1 символов строки S1 и последнии N2 символов строки S2
C++ Функция удаления из строки n-символов, начиная с q-го

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

Или воспользуйтесь поиском по форуму:
i7ungvun
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 8
01.07.2013, 19:57  [ТС]     Удаления символов из строки #11
gray_fox, спасибо,теперь осталось мне только преобразовать всё это в более привычный вид для себя и препода

Добавлено через 24 минуты
gray_fox, да есть же,заработало,спасибо ещё раз большое,спас меня
Yandex
Объявления
01.07.2013, 19:57     Удаления символов из строки
Ответ Создать тему
Опции темы

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