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

Работа со строками. Как найти фразу? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Абстракция текста [C++] http://www.cyberforum.ru/cpp-beginners/thread110091.html
Написал программу которая представляет собой абстракцию текста с классом контейнером. Писал в VS 2008 professional, при компиляции выдает 4 ошибки, помогите пожалуйста разобраться что не правильно....
C++ Структура данных "Стек" и матрица из файла Не представляю как организовать вовсе.. Задание такое: Реализуйте структуру данных "стек". Напишите программу, содержащую описание стека и моделирующую работу стека, реализовав все указанные... http://www.cyberforum.ru/cpp-beginners/thread110087.html
C++ Увеличение максимального размера массива
Дорогие программисты, пожалуйста, помогите!)) Возможно ли увеличить максимальный размер массива??? Как я поняла он ограничен 64500 значениями. А мне необходимо 120000 значений. Может быть это...
C++ Чтение из файла
Помогите разобраться! Вопрос такой - как читать файл. Я новичок в программировании, прошу сильно не бить. Вот что надумал: #include <fstream> #include <iostream> using namespace std; int...
C++ работа с SNMP http://www.cyberforum.ru/cpp-beginners/thread110077.html
Доброго времени суток ув. Коллеги! Требуется разработать программную реализацию протокола SNMP (в частности SNMP агента), основные требования это кроссплатформенность с возможностью запуска данного...
C++ Находим длину самого длинного числа Ребята, наверное это легко но я чего то не допонимаю:( Написать программу, которая в текстовом файле, состоящем из строк длиной не более 50 символов, находит порядковый номер и длину самого... подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
29.03.2010, 17:47
Так?
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
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <map>
 
int main()
{
    std::string textfromfile("Mice hate cats and cats hate mice. If people hate money, life will be happier");
    std::string punctuation(".,:;!?(){}\'\"\\*&%$^#@");
    size_t index;
    //Удаление знаков препинания
    while((index=textfromfile.find_first_of(punctuation))!=std::string::npos)
        textfromfile.erase(index, 1);
    std::stringstream ss(textfromfile);
    std::vector<std::string> words;
    std::map<std::string, std::string> h;
    //Разбиение строки на слова и помещение их в вектор
    while(ss >> textfromfile)
        words.push_back(textfromfile);
    //Поиск слова hate
    for(std::vector<std::string>::const_iterator it=words.begin()+1; it!=words.end()-1; ++it)
        if((*it=="hate")&&(*(it-1)!="hate")&&(*(it+1)!="hate"))
            //Помещение пары в ассоциативный контейнер
            h[*(it-1)]=*(it+1);
    //Вывод результатов
    std::cout << "Let's find out, what they hate..." << std::endl;
    for(std::map<std::string, std::string>::const_iterator it=h.begin(); it!=h.end(); ++it)
        std::cout << it->first << " don't love " << it->second << std::endl;
    system("pause");
    return 0;
}
Добавлено через 14 минут
upd, невнимательно прочитал задание. Строки 11-14 надо удалить, а после 23 нужно поставить проверку на условие, не разделяется ли последовательность знаками препинания:
C++
1
if((punctuation.find(*((it-1)->rbegin()))==std::string::npos)&&(punctuation.find(*((it+1)->begin()))==std::string::npos))
Выглядит излишне громоздко, но предложение "This emotions are bad: envy, hate and anger" разберет правильно.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru