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

В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка при компиляции http://www.cyberforum.ru/cpp-beginners/thread917822.html
Ребята помогите срочно не компилиться программа в чем дело! #include <cstdlib> #include <iostream> #include <windows.h> using namespace std; int main(){
C++ Ошибка ввода в массив #include <iostream> using namespace std; int main() { cout << "vvedite colovo chisel: "; int q = 0; cin >> q; int s = {}; http://www.cyberforum.ru/cpp-beginners/thread917817.html
C++ Упорядочить текстовый массив
Упорядочить текстовый массив лексикографически
Указатель на char C++
Есть программка: #include<iostream> using namespace std; int main() { char *i; char str="1234567890"; i=str; cout<<&i; return 0;
C++ Посчитать сколько двоичных единиц содержит каждое число http://www.cyberforum.ru/cpp-beginners/thread917810.html
Дан цифровой массив , посчитать сколько двоичных единиц содержит каждое число
C++ Как можно ускорить разбор значений в строке #include <iostream> #include <fstream> #include <sstream> #include <vector> #include <string> #include <stdlib.h> #include <stdio.h> #include <time.h> #include <omp.h> #include "cilk/cilk.h" подробнее

Показать сообщение отдельно
nxtech
77 / 59 / 2
Регистрация: 26.06.2013
Сообщений: 198
05.07.2013, 02:45     В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны
Если я правильно понял, заменяем отдельные слова (учитываем разделители: пробелы, запятые и т.д.)
Код
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
#include <iostream>
#include <string>
 
size_t find_any_first_of(std::string const& source, std::string const& item, size_t start = 0)
{
    size_t pos = std::string::npos;
 
    for (size_t i = 0; i < item.length(); ++i)
    {
        size_t p = source.find_first_of(item.at(i), start);
        if (pos > p)
        {
            pos = p;
            if (pos == start) break;
        }
    }
 
    return pos;
}
 
size_t find_any_first_not_of(std::string const& source, std::string const& item, size_t start = 0)
{
    size_t pos = std::string::npos;
 
    for (size_t p = start; p < source.length(); ++p)
    {
        bool no_item = true;
        for (size_t i = 0; i < item.length(); ++i)
        {
            if (source.at(p) == item.at(i))
            {
                no_item = false;
                break;
            }
        }
        if (no_item)
        {
            pos = p;
            break;
        }
    }
 
    return pos;
}
 
size_t replace_all_of(std::string& source, std::string const& replacing, std::string const& replacer, std::string const& delimiter = " ")
{
    size_t count = 0;
 
    size_t p1 = 0;
    size_t p2 = 0;
    while ((p1 = find_any_first_not_of(source, delimiter, p1)) != std::string::npos)
    {
        p2 = find_any_first_of(source, delimiter, p1 + 1);
        if (p2 == std::string::npos) p2 = source.length();
        size_t len = p2 - p1;
        if (source.compare(p1, len, replacing) == 0)
        {
            source.replace(p1, len, replacer);
            p1 += replacer.length();
            ++count;
        }
        else
        {
            p1 = p2 + 1;
        }
    }
 
    return count;
}
 
int main()
{
    using namespace std;
 
    string delimiter = " \t,.!?"; // Необходимые разделители можно добавить.
 
    string sentence = "\tgreen apple is not red apple still, \"green\" apple is an apple, and \"red\" apple is also an apple therefore, both are apples!";
    //cout << "Input sentence: ";
    //getline(cin, sentence);
 
    string replacing = "green";
    //cout << "Input replacing word: ";
    //cin >> replacing;
 
    string replacer = "yellow";
    //cout << "Input replacer word: ";
    //cin >> replacer;
 
    cout << "Sentence: " << sentence << endl;
    cout << "Replacing: " << replacing << endl;
    cout << "Replacer: " << replacer << endl;
    cout << "Replace " << replace_all_of(sentence, replacing, replacer, delimiter) << endl;
    cout << "Result: " << sentence << endl;
 
    return 0;
}
 
Текущее время: 14:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru