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

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

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

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

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

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

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

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
oxotnik
1589 / 1066 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
22.07.2011, 17:37     Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов #2
и в чом затык?
fasked
Эксперт С++
4933 / 2513 / 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;
}
murod
-2 / 7 / 2
Регистрация: 04.11.2010
Сообщений: 163
22.07.2011, 17:43  [ТС]     Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов #4
а если строка вводится с клавиатуры ?
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
22.07.2011, 17:45     Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов #5
Цитата Сообщение от murod Посмотреть сообщение
а если строка вводится с клавиатуры ?
А это уже сам, чей не маленький
murod
-2 / 7 / 2
Регистрация: 04.11.2010
Сообщений: 163
22.07.2011, 17:45  [ТС]     Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов #6
а понял все большое спасибо !
nameless
Эксперт C++
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;
}
xAtom
914 / 739 / 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;
}
easybudda
Эксперт С++
9460 / 5473 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
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);
}
Kastaneda
Форумчанин
Эксперт С++
4511 / 2853 / 227
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
22.07.2011, 22:31     Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов #10
easybudda, в C99 такое:
C
1
char buf[strlen(str) + 1]
разрешено?

Добавлено через 9 минут
Нашел, действительно в C99 так можно, незнал.
easybudda
Эксперт С++
9460 / 5473 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
22.07.2011, 22:33     Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов #11
Kastaneda, ага. Там, кстати, ещё много полезного...
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
22.07.2011, 23:21     Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов #12
Цитата Сообщение от easybudda Посмотреть сообщение
Kastaneda, ага. Там, кстати, ещё много полезного...
А как оно так по-хитрому там устроено ?
easybudda
Эксперт С++
9460 / 5473 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
23.07.2011, 00:32     Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов #13
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от asics Посмотреть сообщение
А как оно так по-хитрому там устроено ?
Из книжки Р. Лав "Linux системное программирование":
речь о системном вызове alloca(), который как-раз так же память выделяет...
... Эта память живёт в стеке и автоматически освобождается, когда вызывающая функция возвращает результат.
И тут примерно так же - при каждом вызове от стека кусок нужной длинны отрезается, при выходе возвращается...
Там же дальше:
VLA (массивы переменной длинны) позволяют избегать нагрузки, создаваемой выделением динамической памяти практически так же, как это делает системный вызов alloca()
Да и вообще очень интересная книжка, рекомендую...
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.07.2011, 02:08     Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов #14
C
1
 char buf[strlen(str) + 1]
хм...интересно, почему такая фича до сих пор не в стандарте С++
Kastaneda
Форумчанин
Эксперт С++
4511 / 2853 / 227
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
23.07.2011, 09:35     Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов #15
Цитата Сообщение от Maxwe11 Посмотреть сообщение
C
1
 char buf[strlen(str) + 1]
хм...интересно, почему такая фича до сих пор не в стандарте С++
Цитата Сообщение от easybudda Посмотреть сообщение
речь о системном вызове alloca(), который как-раз так же память выделяет...
Вот alloca(), функция очень не безопасна, думаю поэтому она не прежилась и в С++ врядли такое появится.
ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
23.07.2011, 11:49     Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов #16
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
  
int main() {
  int i;
  string op = "trop lop kop";
  cout << op << '\n';
  i = count(op.begin(), op.end(), ' ');
  remove_copy(op.begin(),op.end(),op.begin(),' ');
  op.resize(op.size() - i);
  cout << op << '\n';
  return 0;
}
О так можно.
Kastaneda
Форумчанин
Эксперт С++
4511 / 2853 / 227
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
23.07.2011, 14:20     Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов #17
Цитата Сообщение от Maxwe11 Посмотреть сообщение
хм...интересно, почему такая фича до сих пор не в стандарте С++
Нашел в 0x, частично будет поддержка подобных вещей, т.е. сейчас такой код является ошибочным:
C++
1
2
3
int getval(){ return 5;}
///////////////////////////////////
int mas[getval()+2];
В 0x будет введено ключевое слово constexpr, которое позволяет пользователю гарантировать, что или функция или конструктор объекта возвращает константу времени компиляции. Т.е. слудующий код будет допустимым:
C++
1
2
3
constexpr int getval(){ return 5;}
///////////////////////////////////
int mas[getval()+2];
Но тут все в "рамках приличия", память выделяется на этапе компиляции, т.е. это не тоже самое, что в С99, но все же - удобство налицо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2011, 20:13     Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов
Еще ссылки по теме:

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

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

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

Дана строка S и натуральное число N. Создать новую строку, включив в нее все слова из N букв исходной строки - C++
Дана строка S и натуральное число N. Cформировать новую строку, включив в нее все N-буквенные слова исходной строки. Слова в результирующей...

Удалить последнюю строку в файле (или сохранить файл без них) - C++
Читаю текстовое поле чужого приложения, заношу содержимое в файл, из файла читаю последнюю строку. Проблема в том, что в конец файла...


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

Или воспользуйтесь поиском по форуму:
easybudda
23.07.2011, 20:13     Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов
  #18

Не по теме:

Цитата Сообщение от Kastaneda Посмотреть сообщение
функция очень не безопасна
Любая дополнительная возможность требует ответственного подхода. С++ абсолютно в духе языков высокого уровня избавляется по мере возможности от подобных "небезопасных" конструкций. В силу сложности этого языка может оно и правильно - любой дополнительный "подводный камень" может много крови попортить. Вот по этому мне и нравится язык С...

Yandex
Объявления
23.07.2011, 20:13     Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов
Ответ Создать тему
Опции темы

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