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

Обработка строк - C++

Восстановить пароль Регистрация
 
Gajzov
 Аватар для Gajzov
0 / 0 / 0
Регистрация: 16.06.2011
Сообщений: 3
16.06.2011, 08:57     Обработка строк #1
Ребята помогите написать программу, вырезающую из строки все цифры.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2011, 08:57     Обработка строк
Посмотрите здесь:

C++ обработка строк
Обработка строк. C++
C++ Обработка строк
C++ Обработка строк
Обработка строк C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
16.06.2011, 09:25     Обработка строк #2
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <sstream>
#include <algorithm>
bool is_digit(int x){return x >= '0' and x <= '9';}
void out(char x){std::cout << x;}
int main(){
    std::string str;
    std::getline(std::cin,str);
    for_each(str.begin(),remove_if(str.begin(),str.end(),is_digit),out);
    return 0;
}
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
16.06.2011, 11:15     Обработка строк #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <algorithm>
#include <string>
#include <cctype>
 
int main()
{
     std::cout << "input string: ";
     std::string s;
     std::getline(std::cin, s);
 
     s.erase(std::remove_if(s.begin(), s.end(), isdigit), s.end());
     std::cout << s << '\n';
 
     return 0;
}
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
16.06.2011, 12:22     Обработка строк #4
Вот тебе вариант без объекта string.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void  remove_digit(char* str) {
     const char*  p =  str;
     do {
          if( isdigit(*p) )  {
          int i =  ~(str - p) + 1; 
          memmove(str + i, str + i + 1, strlen(str) - i);
          --p;
          }
     } while( *p++ != '\0' );
}
 
 
void main() {
    char   str[] = "Apache 2009, to server IIS - 8, 10-78, multythread.";
    remove_digit(str);
    printf("str = %s\n", str);
}
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,215
Завершенные тесты: 1
16.06.2011, 13:28     Обработка строк #5
Цитата Сообщение от xAtom Посмотреть сообщение
C
1
int i = ~(str - p) + 1;
зачем? если p всегда больше начала строки:
C
1
int i = p - str;
Или так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
 
void remove_digit(char* str) {
    const int len  = strlen(str);
    char * p = str;
    while( *p ) {
        if( isdigit(*p) ) {
            memmove(p, p + 1, len - (p - str));
        } else {
            ++p;
        }
    }
}
 
void main() {
    char   str[] = "Apache 2009, to server IIS - 8, 10-78, multythread.";
    printf("str = %s\n", str);
    remove_digit(str);
    printf("str = %s\n", str);
}
Yandex
Объявления
16.06.2011, 13:28     Обработка строк
Ответ Создать тему
Опции темы

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