Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/75: Рейтинг темы: голосов - 75, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 27.11.2010
Сообщений: 4
1

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

27.11.2010, 16:44. Показов 13711. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Собственно, сама задача:
С клавиатуры вводится некоторый текст. Потом вводится слово(1) которое нужно заменить и слово(2) на которое нужно заменить. Если слово(1) встречается в тексте несколько раз, то во всех случаях его нужно заменить словом(2).
У меня такой вопрос, господа программисты, получится ли эту программу реализовать с помощью функций strstr, strncat, strncpy? А то мне кажется, что ее легче решить посимвольным сравнением.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2010, 16:44
Ответы с готовыми решениями:

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

Замена слов в строке
Помогите с заданием. Дана строка символов S. Каждое второе слово в строке заменить символ тире....

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

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

13
73 / 73 / 11
Регистрация: 20.11.2009
Сообщений: 238
28.11.2010, 11:22 2
C
1
2
3
4
5
6
7
8
9
исходный массив - введенный с клавиатуры текст
организуем цикл
strtok() - разбиваем текст на слова
{
    сравниваем с первым словом
    если оно, пишем во 2-ой массив слово для замены
    если не оно, пишем исходное слово 
}
выводим 2-ой массив
1
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
28.11.2010, 11:40 3
Цитата Сообщение от Ar2Di2 Посмотреть сообщение
А то мне кажется, что ее легче решить посимвольным сравнением.
могу написать код такой программы
надо?
0
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 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;
}
1
0 / 0 / 0
Регистрация: 27.11.2010
Сообщений: 4
29.11.2010, 22:30  [ТС] 5
Спасибо всем за помощь!
0
2 / 2 / 1
Регистрация: 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 не нашёл такую)
1
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
13.12.2010, 16:38 7
4ance, Вот - почитай.
0
2 / 2 / 1
Регистрация: 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, " "));
0
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
14.12.2010, 15:16 9
Цитата Сообщение от 4ance Посмотреть сообщение
Получается, что каждый элемент вектора представляет собой слово.
Да.
Цитата Сообщение от 4ance Посмотреть сообщение
Одна из последних строчек - как конкретно она выводит вектор?
Через пробел.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12460 / 7484 / 1754
Регистрация: 25.07.2009
Сообщений: 13,762
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;
}
3
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 11
22.12.2010, 22:24 11
easybudda, ты гений))))))))))))))))))))))))))))) спасибо спасибо!!!
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12460 / 7484 / 1754
Регистрация: 25.07.2009
Сообщений: 13,762
22.12.2010, 22:56 12
Цитата Сообщение от Marme Посмотреть сообщение
спасибо
обращайтесь
0
2 / 2 / 1
Регистрация: 23.10.2014
Сообщений: 55
09.03.2015, 16:51 13
Ребят, скажите а пробелы учитываются?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12460 / 7484 / 1754
Регистрация: 25.07.2009
Сообщений: 13,762
21.12.2018, 17:11 14
Цитата Сообщение от Алеекс Посмотреть сообщение
а пробелы учитываются?
Все слова через 1 пробел выводятся.
Но это всё в прошлом (Вы на дату создания темы посмотрите). Теперь в С++ регулярные выражения есть и все эти пляски ни к чему.
http://www.cplusplus.com/reference/regex/

Не по теме:

М-да, я тоже молодец. Тему кто-то плюсанул, я на радости на трёхлетний пост ответил :D

1
21.12.2018, 17:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2018, 17:11
Помогаю со студенческими работами здесь

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

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

Поиск слов по маске в строке, их удаление, сортировка оставшихся слов
Доброго времени суток. Помогите, пожалуйста, реализовать задачу. нужно из текстового файла считать...

Замена слов в строке
Смотрите, я, допустим, ввел какую-то строку, потом ввожу, что я хочу в ней заменить и на что, и...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru