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

Не получается удалить символ из строки - C++

Восстановить пароль Регистрация
 
Olejeg85
13 / 10 / 0
Регистрация: 27.03.2011
Сообщений: 164
16.06.2011, 11:19     Не получается удалить символ из строки #1
подскажите как можно удалить знак пунктуации из строки? написал код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
#include <cctype>
 
using namespace std;
 
int main ()
{   
    string str;
 
    getline(cin, str);
    for(string::size_type ix=0; ix!=str.size(); ++ix)
        if(ispunct(str[ix]))
            str[ix]='\b';
 
    cout << str << endl;
    system("pause");
    return 0;
}
но он помимо знака пунктуации цепляет еще и букву перед ним, как это можно исправить?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,213
Завершенные тесты: 1
16.06.2011, 11:28     Не получается удалить символ из строки #2
Посмотрите на программы из этого топика Обработка строк в постах 2 и 3. Надеюсь сообразите, как нужно изменить, под Ваш случай.
Olejeg85
13 / 10 / 0
Регистрация: 27.03.2011
Сообщений: 164
16.06.2011, 11:50  [ТС]     Не получается удалить символ из строки #3
получилось
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
#include <cctype>
#include <algorithm>
 
 
using namespace std;
 
int main ()
{   
    string str;
 
    getline(cin, str);
    for(string::size_type ix=0; ix!=str.size(); ++ix)
        if(ispunct(str[ix]))
            str.erase(std::remove_if(str.begin(), str.end(), ispunct), str.end());
 
    cout << str << endl;
    system("pause");
    return 0;
}
но есть пара нюансов, первый это из задания по книжке и там еще не было algorithm поэтому еще как-то можно сделать, но я не знаю как, если не сложно подскажите, и второй из моего первого поста я не понял почему вместо одного символа убирается два
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,213
Завершенные тесты: 1
16.06.2011, 11:52     Не получается удалить символ из строки #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <algorithm>
#include <string>
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    std::cout << "Введите строку: ";
    std::string s;
    std::getline(std::cin, s);
 
    s.erase(std::remove_if(s.begin(), s.end(), ispunct), s.end());
 
    std::cout << "Строка без знаков пунктуации: ";
    std::cout << s << std::endl;
 
    system("pause");
 
    return 0;
}
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
16.06.2011, 13:27     Не получается удалить символ из строки #5
Вот варинант работает как часы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void main() {
 
std::string str = "Test;,,,. Ops 'ops', TERMINATOR 200211";
 
std::string::iterator   iter = str.begin();
while( iter != str.end() ) {
       if( ispunct( *iter )) {
    str.erase(iter);
    iter = str.begin();
       }
      *iter++;
}
 
puts( str.c_str());
 
}
sandye51
16.06.2011, 14:15
  #6

Не по теме:

xAtom, гавенный вариант.

Цитата Сообщение от xAtom Посмотреть сообщение
работает как часы:
которые у моей бабушки в деревне

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2011, 14:24     Не получается удалить символ из строки
Еще ссылки по теме:

Удалить символ из строки C++
C++ Работа со строками. Как удалить символ с строки
Каждый символ строки заменить на следующий за ним, а последний символ строки заменяеть первым C++

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

Или воспользуйтесь поиском по форуму:
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
16.06.2011, 14:24     Не получается удалить символ из строки #7
Вариант со смещением в си стиле
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cctype>
void del(char * x){
    while (*x=*(x+++1));
}
int main(){ 
    char s[100];
    std::cin.getline(s,100);
    for (char * p = s; *p; *++p)
        if (ispunct(*p)) del(p--);
    std::cout << s;
    return 0;
}
Yandex
Объявления
16.06.2011, 14:24     Не получается удалить символ из строки
Ответ Создать тему
Опции темы

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