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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.90
Ar2Di2
0 / 0 / 0
Регистрация: 27.11.2010
Сообщений: 4
#1

Замена слов в строке - C++

27.11.2010, 16:44. Просмотров 4232. Ответов 12
Метки нет (Все метки)

Собственно, сама задача:
С клавиатуры вводится некоторый текст. Потом вводится слово(1) которое нужно заменить и слово(2) на которое нужно заменить. Если слово(1) встречается в тексте несколько раз, то во всех случаях его нужно заменить словом(2).
У меня такой вопрос, господа программисты, получится ли эту программу реализовать с помощью функций strstr, strncat, strncpy? А то мне кажется, что ее легче решить посимвольным сравнением.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2010, 16:44     Замена слов в строке
Посмотрите здесь:

Замена слов в строке - C++
Можно ли как-то в строке например Заменить все слова "много", как это сделать ?

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

Замена слов в строке - C++
Помогите с заданием. Дана строка символов S. Каждое второе слово в строке заменить символ тире. Код, который не работает(( ...

Замена слов в строке - C++
Программа берет данные из файла. Далее должна заменять Все слова н1 на н2. Однако получается только для первого найденного слова. ...

Удаление и замена слов в строке - C++
Здравствуйте! Помогите, пожалуйста написать программу! Дана последовательность строк. Каждая строка состоит из слов, разделенных...

Замена слов в строке на другое слово - C++
Не могу понять в чём ошибка, вроде бы всё логично, но при работе программа выдаёт 3 ошибки и не выполняется(то есть слова я ввожу и всё) ...

Замена слов С\С++ - C++
Найти в введенном предложении числа, записанные словами, и записать их арабскими цифрами. Например: "мне восемнадцать лет" на "мне 18 лет"....

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
qwarta
73 / 73 / 7
Регистрация: 20.11.2009
Сообщений: 238
28.11.2010, 11:22     Замена слов в строке #2
C
1
2
3
4
5
6
7
8
9
исходный массив - введенный с клавиатуры текст
организуем цикл
strtok() - разбиваем текст на слова
{
    сравниваем с первым словом
    если оно, пишем во 2-ой массив слово для замены
    если не оно, пишем исходное слово 
}
выводим 2-ой массив
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
28.11.2010, 11:40     Замена слов в строке #3
Цитата Сообщение от Ar2Di2 Посмотреть сообщение
А то мне кажется, что ее легче решить посимвольным сравнением.
могу написать код такой программы
надо?
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
28.11.2010, 13:24     Замена слов в строке #4
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
#include <iostream>
#include <string>
#include <algorithm>
#include <sstream>
#include <vector>
#include <iterator>
 
int main()
{
        std::string str, _1word, _2word;
        std::cout << "Enter string: ";
        getline(std::cin, str);
 
        std::cout << "Enter first word: ";
        std::cin >> _1word;
 
        std::cout << "Enter second word: ";
        std::cin >> _2word;
 
        std::istringstream ist(str);
        std::vector<std::string> vec_str;
 
        while(ist >> str)
        {
            vec_str.push_back(str);
        }
 
        for(int i = 0; i < vec_str.size(); ++i)
        {
            if(vec_str[i] == _1word)
            {
                vec_str[i] = _2word;
            }
        }
 
        std::copy(vec_str.begin(), vec_str.end(), std::ostream_iterator<std::string>(std::cout, " "));
 
        return 0;
}
Ar2Di2
0 / 0 / 0
Регистрация: 27.11.2010
Сообщений: 4
29.11.2010, 22:30  [ТС]     Замена слов в строке #5
Спасибо всем за помощь!
4ance
1 / 1 / 0
Регистрация: 02.11.2010
Сообщений: 78
13.12.2010, 16:27     Замена слов в строке #6
Цитата Сообщение от asics Посмотреть сообщение
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
#include <iostream>
#include <string>
#include <algorithm>
#include <sstream>
#include <vector>
#include <iterator>
 
int main()
{
        std::string str, _1word, _2word;
        std::cout << "Enter string: ";
        getline(std::cin, str);
 
        std::cout << "Enter first word: ";
        std::cin >> _1word;
 
        std::cout << "Enter second word: ";
        std::cin >> _2word;
 
        std::istringstream ist(str);
        std::vector<std::string> vec_str;
 
        while(ist >> str)
        {
            vec_str.push_back(str);
        }
 
        for(int i = 0; i < vec_str.size(); ++i)
        {
            if(vec_str[i] == _1word)
            {
                vec_str[i] = _2word;
            }
        }
 
        std::copy(vec_str.begin(), vec_str.end(), std::ostream_iterator<std::string>(std::cout, " "));
 
        return 0;
}
std::istringstream ist(str);
ist() - что за функция? На cplusplus.com не нашёл такую)
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
13.12.2010, 16:38     Замена слов в строке #7
4ance, Вот - почитай.
4ance
1 / 1 / 0
Регистрация: 02.11.2010
Сообщений: 78
14.12.2010, 15:13     Замена слов в строке #8
Цитата Сообщение от asics Посмотреть сообщение
4ance, Вот - почитай.
Получается, что каждый элемент вектора представляет собой слово.

Одна из последних строчек - как конкретно она выводит вектор?

std::copy(vec_str.begin(), vec_str.end(), std::ostream_iterator<std::string>(std::cout, " "));
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
14.12.2010, 15:16     Замена слов в строке #9
Цитата Сообщение от 4ance Посмотреть сообщение
Получается, что каждый элемент вектора представляет собой слово.
Да.
Цитата Сообщение от 4ance Посмотреть сообщение
Одна из последних строчек - как конкретно она выводит вектор?
Через пробел.
easybudda
Эксперт CЭксперт С++
9470 / 5483 / 927
Регистрация: 25.07.2009
Сообщений: 10,508
14.12.2010, 15:49     Замена слов в строке #10
asics, так ещё эстээльнее
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
#include <iostream>
#include <sstream>
#include <string>
#include <list>
#include <algorithm>
#include <iterator>
 
int main(){
    std::string str, wrd1, wrd2;
    
    std::cout << "String: ";
    std::getline(std::cin, str);
    std::cout << "Change from: ";
    std::cin >> wrd1;
    std::cout << "Change to: ";
    std::cin >> wrd2;
    
    std::istringstream ist(str);
    std::list<std::string> list;
    std::copy(std::istream_iterator<std::string>(ist), std::istream_iterator<std::string>(), std::back_inserter(list));
    std::replace(list.begin(), list.end(), wrd1, wrd2);
    
    std::cout << "Result: ";
    std::copy(list.begin(), list.end(), std::ostream_iterator<std::string>(std::cout, " "));
    std::cout << std::endl;
    
    return 0;
}
Marme
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 11
22.12.2010, 22:24     Замена слов в строке #11
easybudda, ты гений))))))))))))))))))))))))))))) спасибо спасибо!!!
easybudda
Эксперт CЭксперт С++
9470 / 5483 / 927
Регистрация: 25.07.2009
Сообщений: 10,508
22.12.2010, 22:56     Замена слов в строке #12
Цитата Сообщение от Marme Посмотреть сообщение
спасибо
обращайтесь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2015, 16:51     Замена слов в строке
Еще ссылки по теме:

Замена слов в тексте - C++
Народ всем привет вот опять задачу не могу решить прошел недавно тему векторов вот после нее задача чесно говоря векторы не очень понел так...

Замена слов местами VС++ - C++
Доброго дня всем! Есть файл, в нем текст, надо считать текст с файла и поменять местами четные и нечетные слова (1&lt;=&gt;2, 3&lt;=&gt;4, 5&lt;=&gt;6 и...

Замена слов в string - C++
Подскажите в чём проблема. В строке нужно искать слова длиной &gt;10 символов и менять их на другое слово. Смысл понятен , не получается...

Замена слов цифрами - C++
Пользователь вводит текст, программа проверяет текст на наличие цифр записанных прописью. Реализация с помощью строк. Помогите с...

Замена слов в предложении - C++
Ввести два предложения. Если у них есть одинаковые слова, то заменить их во втором предложении на соответствующее количество символов...


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

Или воспользуйтесь поиском по форуму:
Алеекс
2 / 2 / 1
Регистрация: 23.10.2014
Сообщений: 51
09.03.2015, 16:51     Замена слов в строке #13
Ребят, скажите а пробелы учитываются?
Yandex
Объявления
09.03.2015, 16:51     Замена слов в строке
Ответ Создать тему
Опции темы

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