Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление всех пробелов в строке 
V
    Опции темы
stat007
Дата 18.2.2009, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 521
Регистрация: 9.10.2008

Репутация: -2
Всего: -4



Поскажите как удалить ВСЕ пробелы в строке?
Напимер: 
Enter string:
mama mila   ramu ! !

Что бы выводила такой результат:
mamamilaramu!!

PM MAIL   Вверх
Andrey44
Дата 18.2.2009, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 2
Всего: 26



stat007, а покажи как делаешь ты.


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
mes
Дата 18.2.2009, 11:42 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Код

#include <iostream>
#include <algorithm>

bool is_space(char c) { return c==' '; }

int main()
{

    std::string  s = "1 2 3  456 7 8  9 0 q we   r t z ui";

    s.erase(
             std::remove_if(s.begin(), s.end(), is_space),
                                                            s.end());

    std::cout << s<<std::endl;

    system ("pause");
}

подробности по коду можно найти здесь :

http://www.cplusplus.com/reference/algorithm/
http://www.cplusplus.com/reference/algorithm/remove_if.html
http://www.cplusplus.com/reference/string/string/

Это сообщение отредактировал(а) mes - 18.2.2009, 11:52


--------------------
PM MAIL WWW   Вверх
Djinn
Дата 18.2.2009, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



mes, + тебе, сенкс, интересные ф-и... не юзал еще smile
PM MAIL   Вверх
bsa
Дата 18.2.2009, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(Djinn @ 18.2.2009,  13:53)
mes, + тебе, сенкс, интересные ф-и... не юзал еще smile

Почитай книжку по стандартным библиотекам Си и Си++. Много интересного узнаешь. smile 
PM   Вверх
stat007
Дата 18.2.2009, 21:18 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 521
Регистрация: 9.10.2008

Репутация: -2
Всего: -4



благодарю.. спасибо.
теперь такой вопрос: Как разделить строку на пробулы после каждой буквы:
т.е. например:
Enter string:
Hello World!
Должно вывести:
H e l l o W o r l d !

Модератор: Пожалуйста, один топик - один вопрос.

Это сообщение отредактировал(а) bsa - 19.2.2009, 12:10
PM MAIL   Вверх
cutwater
Дата 18.2.2009, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: 2
Всего: 10



stat007, это же элементарно! Вы читали хотя бы одну книгу по С++?



--------------------
user posted image
PM MAIL   Вверх
mes
Дата 18.2.2009, 21:57 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



неужели самому попробовать для начала трудно, и выложить хотя бы неработающий код для исправления.
если всё будут решать за Вас Вы так никогда ничему и не научитесь.
в ссылках из предыдущего поста функций (с  их полным описанием и примерами) предостаточно, чтоб решить Вашу задачу.


вначале удалить лишние пробелы, а после вставить пробел после каждой буквы
например так:
Код

    for (std::string::iterator it = s.begin(); it!=s.end() && ++it!=s.end(); ++it)  it=s.insert(it,' ');

одно из условий можно вынести за цикл (т.е перед циклом проверить что в строке есть хотя бы один символ) - но это уж сами..


Это сообщение отредактировал(а) mes - 18.2.2009, 22:07


--------------------
PM MAIL WWW   Вверх
bsa
Дата 19.2.2009, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196




M
bsa
stat007, если сам писать код не хочешь, то тебе сюда.
Если ответ на свой вопрос (тот который в заглавии) ты получил, то пометь тему решенной

PM   Вверх
afanp
Дата 19.2.2009, 17:13 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 25.11.2008

Репутация: нет
Всего: нет



Код

// bew.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main(){
    string s1;
    string s2=" ";
    getline(cin,s1);
    string s3;
    for(int i=0;i<s1.length();i++){
        if( (int(s1[i])>=65  && int(s1[i])<=90)  ||  (int(s1[i]) >=97 && int(s1[i]) <=122) )
            s3=(s3+s1[i])+s2;}

    cout << s3;
    system("pause");
    return 0;
}

вотъ
PM MAIL   Вверх
mes
Дата 19.2.2009, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(afanp @  19.2.2009,  16:13 Найти цитируемый пост)
 if( (int(s1[i])>=65  && int(s1[i])<=90)  ||  (int(s1[i]) >=97 && int(s1[i]) <=122) )

65,90, 97, 122 - не кажется ли Вам что эти цифры не несут в себе смысла, да и немного напрягают программиста при чтении кода ?
имхо так будет посимпатичнее :
Код

if( (s1[i])>='A'  && s1[i]<='Z')  ||  (s1[i] >='a' && s1[i] <='z')


а также это не совсем соответствует заданию, так как учитываются только символы английского алфавита... 

Это сообщение отредактировал(а) mes - 19.2.2009, 17:59


--------------------
PM MAIL WWW   Вверх
Kurganec
Дата 19.2.2009, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 6.6.2008
Где: СПБ

Репутация: нет
Всего: нет



Цитата(mes @ 19.2.2009,  17:57)

65,90, 97, 122 - не кажется ли Вам что эти цифры не несут в себе смысла


кажется  smile 

к  тому же программа может работать не верно на некоторых платформах.


PM MAIL ICQ Skype   Вверх
bsa
Дата 19.2.2009, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



тогда уж лучше:
Код
s.erase(std::remove(s.begin(), s.end(), ' '), s.end());

PM   Вверх
afanp
Дата 19.2.2009, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 25.11.2008

Репутация: нет
Всего: нет



хм, большое спасибо за советы. А не могли бы Вы пояснить немного что именно происходит 
s.erase(std::remove(s.begin(), s.end(), ' '), s.end()); тут ? 
s.erase это функция удаления каких то символов из строки,я так понимаю,  а вот std::remove?
PM MAIL   Вверх
mes
Дата 19.2.2009, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



а пройти по вышеупомянутой ссылке не пробовали ?
Цитата(mes @  18.2.2009,  10:42 Найти цитируемый пост)
http://www.cplusplus.com/reference/algorithm/remove_if.html

там найдете и описание и условный  вариант реализации и пример использования smile


Это сообщение отредактировал(а) mes - 19.2.2009, 22:17


--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1168 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.