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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
murod
-2 / 7 / 2
Регистрация: 04.11.2010
Сообщений: 163
#1

Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов - C++

22.07.2011, 17:35. Просмотров 2131. Ответов 17
Метки нет (Все метки)

Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.07.2011, 17:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов (C++):

Дана строка. Удалить из нее все лишние пробелы - C++
Дана строка. Удалить из нее все лишние пробелы, оставив между словами не более одного. Результат поместить в новую строку.

Дана строка символов. Заменить в ней все пробелы на табуляции - C++
Здравствуйте! Ребят, помогите решить следующие задачи : Тема: Обработка строк 1)Дана строка символов. Заменить в ней все...

Последовательности следующих друг за другом пробелов заменить одним пробелом (т.е. удалить все пробелы, следующие непосредственно за пробелом) - C++
Последовательности следующих друг за другом пробелов заменить одним пробелом (т.е. удалить все пробелы, следующие непосредственно за...

Удалить группы пробелов, которыми начинается и заканчивается строка, а каждую внутреннюю группу пробелов заменить одним пробелом - C++
Задана строка символов. Преобразовать эту строку следующим образом: удалить группы пробелов, которыми начинается и заканчивается строка, а...

Дана строка S1. Удалить в ней все вхождения символа '*' - C++
Здравствуйте. Помогите сделать. Дана строка S1. Удалить в ней символы *(звездочка).

Дана строка из букв и цифр. Удалить из строки все буквы. C++ - C++
Дана строка из букв и цифр. Удалить из строки все буквы.

17
oxotnik
1591 / 1068 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
22.07.2011, 17:37 #2
и в чом затык?
0
fasked
Эксперт С++
4948 / 2528 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
22.07.2011, 17:42 #3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
#define SIZE 20
 
int main() {
    char str1[SIZE] = "a db nn  d";
    char str2[SIZE] = { 0 };
    int i, j;
 
    for (i = 0, j = 0; str1[i] != '\0' && i < SIZE; ++i) {
        if (str1[i] != ' ') {
            str2[j++] = str1[i];
        }
    }
 
    printf("%s\n", str2);
    return 0;
}
0
murod
-2 / 7 / 2
Регистрация: 04.11.2010
Сообщений: 163
22.07.2011, 17:43  [ТС] #4
а если строка вводится с клавиатуры ?
0
fasked
Эксперт С++
4948 / 2528 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
22.07.2011, 17:45 #5
Цитата Сообщение от murod Посмотреть сообщение
а если строка вводится с клавиатуры ?
А это уже сам, чей не маленький
1
murod
-2 / 7 / 2
Регистрация: 04.11.2010
Сообщений: 163
22.07.2011, 17:45  [ТС] #6
а понял все большое спасибо !
0
nameless
Эксперт С++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
22.07.2011, 18:14 #7
murod,

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <algorithm>
#include <iostream>
#include <string>
 
int main()
{
   std::string str = "this is test string";
   str.erase(std::remove(str.begin(), str.end(), ' '), str.end());
   std::cout << str << std::endl;
 
   return 0;
}
0
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
22.07.2011, 21:58 #8
Вот вариант накидал, обработка в одном буфере, в параметре можешь задавать любой символ.
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
30
31
32
#include <stdio.h>
 
 
char*  chr_del(char* str, char ch) {
      char* src = str;
      char* ca, *cb;
      while( *str ) {
          if( *str == ch ){
                ca = str;
                cb = str + 1;
                while(*ca++ = *cb++);
                continue;
          }
          *str++;
      }
      return src;
}
 
 
 
int main(void) {
 
   char buf[255];
   printf("input string: ");
   gets(buf);
 
   chr_del(buf, ' ');
   printf("result: %s\n", buf);
 
   getchar();
   return 0;
}
0
easybudda
Модератор
Эксперт CЭксперт С++
9693 / 5643 / 962
Регистрация: 25.07.2009
Сообщений: 10,848
22.07.2011, 22:19 #9
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
/* ANSI C 99 */
/* удалить все пробелы... */
 
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
 
char * remove_spaces(char * str){
    char buf[strlen(str) + 1], * b = buf, * s = str;
    
    while ( *s ){
        if ( ! isspace(*s) )
            *b++ = *s;
        ++s;
    }
    *b = '\0';
    
    return strcpy(str, buf);
}
 
int main(void){
    char buf[BUFSIZ];
    
    while ( printf("String: ") && scanf("%[^\n]%*c", buf) == 1 )
        printf("Result: %s\n", remove_spaces(buf));
    
    exit(0);
}
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,354
Записей в блоге: 2
Завершенные тесты: 1
22.07.2011, 22:31 #10
easybudda, в C99 такое:
C
1
char buf[strlen(str) + 1]
разрешено?

Добавлено через 9 минут
Нашел, действительно в C99 так можно, незнал.
0
easybudda
Модератор
Эксперт CЭксперт С++
9693 / 5643 / 962
Регистрация: 25.07.2009
Сообщений: 10,848
22.07.2011, 22:33 #11
Kastaneda, ага. Там, кстати, ещё много полезного...
0
asics
Freelance
Эксперт С++
2848 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
22.07.2011, 23:21 #12
Цитата Сообщение от easybudda Посмотреть сообщение
Kastaneda, ага. Там, кстати, ещё много полезного...
А как оно так по-хитрому там устроено ?
0
easybudda
Модератор
Эксперт CЭксперт С++
9693 / 5643 / 962
Регистрация: 25.07.2009
Сообщений: 10,848
23.07.2011, 00:32 #13
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от asics Посмотреть сообщение
А как оно так по-хитрому там устроено ?
Из книжки Р. Лав "Linux системное программирование":
речь о системном вызове alloca(), который как-раз так же память выделяет...
... Эта память живёт в стеке и автоматически освобождается, когда вызывающая функция возвращает результат.
И тут примерно так же - при каждом вызове от стека кусок нужной длинны отрезается, при выходе возвращается...
Там же дальше:
VLA (массивы переменной длинны) позволяют избегать нагрузки, создаваемой выделением динамической памяти практически так же, как это делает системный вызов alloca()
Да и вообще очень интересная книжка, рекомендую...
3
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.07.2011, 02:08 #14
C
1
 char buf[strlen(str) + 1]
хм...интересно, почему такая фича до сих пор не в стандарте С++
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,354
Записей в блоге: 2
Завершенные тесты: 1
23.07.2011, 09:35 #15
Цитата Сообщение от Maxwe11 Посмотреть сообщение
C
1
 char buf[strlen(str) + 1]
хм...интересно, почему такая фича до сих пор не в стандарте С++
Цитата Сообщение от easybudda Посмотреть сообщение
речь о системном вызове alloca(), который как-раз так же память выделяет...
Вот alloca(), функция очень не безопасна, думаю поэтому она не прежилась и в С++ врядли такое появится.
0
23.07.2011, 09:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2011, 09:35
Привет! Вот еще темы с ответами:

Дана символьная строка, удалить из нее путем сдвига все цифры - C++
1) Дана символьная строка, удалить из нее путем сдвига все цифры 2) Дан массив символьных строк, найти номер строки с максимальным числом...

Дана строка символов, состоящая из букв и цифр. Удалить из строки все цифры - C++
Нужна прога... Дана строка символов, состоящая из букв и цифр. Удалить из строки все цифры. Буду очень признательна

Дана строка. Удалить из строки все двойные символы. Пример: “asddewwf” → “asdewf” - C++
Дана строка. Удалить из строки все двойные символы. Пример: “asddewwf” → “asdewf”.

Вычитатель пробелов(удалить из текста лишние пробелы) - C++
Помогите создать программу которая вычитает лишние пробелы из текста который надо ввести с клавиатуры(между словами должно быть не более 1...


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

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

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