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

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

Восстановить пароль Регистрация
 
hektor
0 / 0 / 0
Регистрация: 14.10.2010
Сообщений: 15
13.11.2011, 22:17     Удалить из текста повторные пробелы #1
Задача: удалить из текста повторные пробелы!
подскажите как можно лучше это реализовать методами stl (обойтись без цикла, если это возможно).
вот мой код:
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
33
34
35
36
37
#include <iostream>
#include <string>
#include <vector>
#include <iterator>
#include <algorithm>
using namespace std;
bool func (char i)
{
    return i != ' ';
}
int main ()
{
    freopen ("input.txt","r",stdin);
    string a;
    getline(cin,a);
    typedef vector<char> myv;
    myv v;
    myv::iterator it;
    myv::iterator it2;
    int l = a.length();
    for (int i = 0; i < l; i++)
    {
        v.push_back(a[i]);
    }
    it = v.begin();
    while (it != v.end())
    {
        it = find(it,v.end(),' ');
        it++;
        it2 = find_if(it,v.end(),func);
        v.erase(it,it2);
 
    }
    ostream_iterator<char> os(cout);
    copy(v.begin(),v.end(),os);
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
13.11.2011, 22:19     Удалить из текста повторные пробелы #2
Цитата Сообщение от hektor Посмотреть сообщение
freopen ("input.txt","r",stdin);
нехорошо мешать ++ и си.
hektor
0 / 0 / 0
Регистрация: 14.10.2010
Сообщений: 15
13.11.2011, 22:23  [ТС]     Удалить из текста повторные пробелы #3
хорошо, буду писать через fstream, а вот относительно задачи то как можно заменить цикл while?
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
13.11.2011, 23:24     Удалить из текста повторные пробелы #4
через unigue и бинарный предикат или transform
hektor
0 / 0 / 0
Регистрация: 14.10.2010
Сообщений: 15
16.11.2011, 01:26  [ТС]     Удалить из текста повторные пробелы #5
спасибо,работает)
вот код,кому нужно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <iterator>
#include <fstream>
using namespace std;
bool f (char i, char j)
{
  return (i == ' ' && j == ' ');
}
int main ()
{
    ifstream is("in.txt");
    string a;
    getline(is,a);
    string::iterator it = unique(a.begin(),a.end(),f);
    a.erase(it,a.end());
    copy(a.begin(),a.end(),ostream_iterator<char>(cout));
    cout << endl;
    return 0;
}
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
16.11.2011, 15:33     Удалить из текста повторные пробелы #6
hektor, так то лучше
Yandex
Объявления
16.11.2011, 15:33     Удалить из текста повторные пробелы
Ответ Создать тему
Опции темы

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