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

Замена символов на пробелы в string - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Alexem
0 / 0 / 0
Регистрация: 14.10.2012
Сообщений: 35
18.02.2013, 08:05     Замена символов на пробелы в string #1
Здравствуйте, есть такое задание:Есть вектор page в котором находятся string в нем записан большой текст в котором есть русские буквы,английские буквы и символы как мне заменить в string все символы на пробелы вроде функция replace заменяет но я не понимаю как в этом случае её воспользоватся.Можете подсказать решение этой задачи?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2013, 08:05     Замена символов на пробелы в string
Посмотрите здесь:

C++ Замена буквы на пробелы
C++ Удалить конец строки символов. Ввести кол-во удаляемых символов , вывести результат ,String ,задачка,С++
C++ Убрать в переменной типа string пробелы
C++ В заданной строке установить пробелы вместо символов
В строке символов установить пробелы вместо символов,номера позиций которых при делении на 6 дают в остатке 3 C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
18.02.2013, 08:23     Замена символов на пробелы в string #2
Alexem, Предикат использовать же.
C++
1
std::replace_if(text.begin(), text.end(), ispunct, ' ');
Alexem
0 / 0 / 0
Регистрация: 14.10.2012
Сообщений: 35
18.02.2013, 08:44  [ТС]     Замена символов на пробелы в string #3
Цитата Сообщение от ForEveR Посмотреть сообщение
Alexem, Предикат использовать же.
C++
1
std::replace_if(text.begin(), text.end(), ispunct, ' ');
Пишет вот такую ошибку 'int (int)' : cannot convert parameter 1 from 'std::basic_string<_Elem,_Traits,_Alloc>' to 'int'
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
18.02.2013, 08:49     Замена символов на пробелы в string #4
Alexem, Э?
C++
1
2
3
4
5
6
7
8
9
10
#include <algorithm>
#include <string>
#include <iostream>
 
int main()
{
   std::string s = "h,e.l!l?o:";
   std::replace_if(s.begin(), s.end(), ispunct, ' ');
   std::cout << s << std::endl;
}
http://liveworkspace.org/code/xYluZ$0
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
18.02.2013, 08:57     Замена символов на пробелы в string #5
Цитата Сообщение от Alexem Посмотреть сообщение
Пишет вот такую ошибку 'int (int)' : cannot convert parameter 1 from 'std::basic_string<_Elem,_Traits,_Alloc>' to 'int'
replace_if для одной строки.
C++
1
2
3
for (std::vector<std::sting>::iterator it = text.begin(); it != text.end(); ++it) {
   std::replace_if(it->begin(), it->end(), ispunct, ' ');
}
Добавлено через 6 минут
Цитата Сообщение от gray_fox Посмотреть сообщение
C++
1
std::vector<std::sting>::iterator
Опечатка
C++
1
std::vector<std::string>::iterator
Alexem
0 / 0 / 0
Регистрация: 14.10.2012
Сообщений: 35
18.02.2013, 09:02  [ТС]     Замена символов на пробелы в string #6
C++
1
2
3
4
5
6
7
8
9
10
#include <Vector>
#include <iterator>
#include "filter.h"
#include "Header.h"
using namespace std;
void main()
{   
    filter f;
    f.Interface();
}
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include <string>
#include <iostream>
#include "Header.h"
#include <conio.h>
#include <stdio.h>
#include<fstream>
#include <Vector>
#include <iterator>
#include "filter.h"
#include <algorithm>
using namespace std;
void filter::InitVector(vector<string> &page)
{
        int a=1;
        page.resize(a);
        ifstream in("music.txt");
        int i=0,count=0;
        string str;
        if(!in.is_open())
        {
            cout<<"Error!\n";
            return;
        }
        while(!in.eof())
        {
            getline(in,str,'\n');
            str = str+ "\n";
            if(i==0)
                page[count]=str;    
            else 
                page[count]=page[count]+str;    
            i++;
            if(i==80)
            {
                a++;
                page.resize(a);
                count++;
                i=0;
            }
        }
            
 
        in.close(); 
}
void filter::Print(vector<string> page,int a)
{
    RussianMessage(page[a].c_str());
}
void filter::Interface()
{
    int a=0;
    InitVector(page);
    Print(page,a);
    while (1)
    {
        int result = getch();
        if(result == 224)
        {
            result = getch();
            switch(result)
            {
                case 72: //верх
                    {
                        if(a==0)
                            break;
                        else
                        a--;
                        system("cls");  
                        Print(page,a);
                        break;
                    }
                case 80: //вниз
                    {
                        if(a==291)
                            break;
                        else
                        a++;
                        system("cls");
                        Print(page,a);
                        break;
                    }
 
 
            }
        }
        else
        {
            switch(result)
            {
                case 49:
                    {
                        system("cls");
                        for (std::vector<std::string>::iterator it = page.begin(); it != page.end(); ++it) 
                        {
                            std::replace_if(it->begin(), it->end(), ispunct, ' ');
                        }
                        Print(page,a);
                    }
            }
        }
    }
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#pragma once
#include <string>
using namespace std;
class filter
{
    vector<string> page;
public:
    void InitVector(vector<string> &page);
    void Interface();
    void Print(vector<string> page,int a);
 
 
};
при нажатии на 1 должен сработать case 49 там я написал то что вы мне подсказали но вылетает ошибка на этапе выполнение
Alexem
0 / 0 / 0
Регистрация: 14.10.2012
Сообщений: 35
18.02.2013, 09:15  [ТС]     Замена символов на пробелы в string #7
вот этот файл с текстом чтоб удобнее было если будете проверять по моему коду
Вложения
Тип файла: txt music.txt (19.7 Кб, 6 просмотров)
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
18.02.2013, 09:21     Замена символов на пробелы в string #8
Alexem, Я дико подозреваю, что проверять никто не будет. Ошибку мы должны угадать? Дебагером пользовались? Минимальный пример, демонстрирующий проблему потрудитесь предоставить
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2013, 09:24     Замена символов на пробелы в string
Еще ссылки по теме:

Замена букв на пробелы C++
C++ Замена первых двух символов во всех string полях

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

Или воспользуйтесь поиском по форуму:
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
18.02.2013, 09:24     Замена символов на пробелы в string #9
Цитата Сообщение от Alexem Посмотреть сообщение
при нажатии на 1 должен сработать case 49 там я написал то что вы мне подсказали но вылетает ошибка на этапе выполнение
Мне сложно понять, что там в коде происходит, но конкретно с самим replace_if проблем быть не должно. Вот пример, может поможет: http://ideone.com/t0qXTq .
Yandex
Объявления
18.02.2013, 09:24     Замена символов на пробелы в string
Ответ Создать тему
Опции темы

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