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

Не выводится значение multimap по ключу - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Какие элементы C++ использовать при создании экспертной системы? http://www.cyberforum.ru/cpp-beginners/thread1585329.html
Мне нужно на языке С++ создать что-то подобное экспертной системе (ЭС). Есть список факторов 1 фактор зависит от значений факторов 1-1, 1-2, 1-3 2 фактор зависит от значений факторов 2-1, 2-2, 2-3 3 фактор зависит от значений факторов 3-1, 3-2, 3-3 и т.д. Значение фактор вводит пользователь в ответ на вопрос ЭС. Ответы могут быть такие: Да (или, например, 1), Нет (0) и неизвестно (2) Если...
C++ Как перевести из char в int? нужно присвоить значение массива char A в int B, например B=A, но выбивает ошибку, пробовал B=atoi(&A); но выбивает другое число http://www.cyberforum.ru/cpp-beginners/thread1585320.html
C++ Лежит ли точка внутри треугольника?
Даны 4 координаты. 3 вершины треугольника и точка. Это данные ввода. Помогите советом. Надо определить лежит ли точка внутри треугольника или на ребре, или вне... Какой алгоритм уже только не писал... Проблема в том на на вводе могу быть числа очень малые, например 3....e-38 . Использовал уже и D = (x -x1)*(y2 - y1) - (y -y1)*(x2-x1) с условием, что если D>0 то точка лежит правее прямой, =0...
C++ Хранение координат точки с помощью объединения
Написать программу ввода координаты точки трехмерного пространства (x, y, z) для целочисленных и вещественных типов данных. С ПОМОЩЬЮ ОБЪЕДИНЕНИЯ!!! Помогите пожалуйста!)
C++ Составьте код для решения http://www.cyberforum.ru/cpp-beginners/thread1585305.html
Нужно составить программный код для решения выражения : (sinx+cosy)/(cosx-siny))*tgxy
C++ Создать класс Human состоящий из 3 полей. Как найти возраст? создать класс Human состоящий из 3 полей -дата рождения -пол -национальность Класс Human должен иметь скрытую для сторонних методов и классов функцию для вычисления возраста человека и защишенную функцию для вывода возраста человека на экран. Помогите решить. Вот которая сам сделал. Но не мог функцию для вычисления возраста делать не смог //human.h подробнее

Показать сообщение отдельно
abromus
0 / 0 / 0
Регистрация: 14.04.2015
Сообщений: 1

Не выводится значение multimap по ключу - C++

18.11.2015, 21:20. Просмотров 301. Ответов 0
Метки (Все метки)

Здравствуйте!
Я считываю строки из файла base.xml и записываю их в multimap в виде пары (soname, article). //теги из xml-файла
После считывания выводится вся информация без тегов, но при попытке намеренно вывести значение по ключу ничего не происходит. Подскажите, пожалуйста, почему так?
Еще есть проблема с открытием xml-файла в браузере, когда текст, заключенный в тегах, написан на русском языке. Как это исправить?
Заранее спасибо!

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
#include <iostream>
#include <fstream>
#include <map>
#include <list>
 
using namespace std;
typedef multimap<string, string> StrStrMMap;
 
//обработка считанной строки в тегах soname
string handling_string_soname (string s)
{
    s.erase(0, 8);
    s.erase(s.size() - 10, 9);
    return s;
}
 
//обработка считанной строки в тегах article
string handling_string_article (string s)
{
    s.erase(0, 9);
    s.erase(s.size() - 11, 10);
    return s;
}
 
int main()
{
    ifstream my_base("base.xml");
    multimap<string, string> homo_homo_sapiens;
 
    StrStrMMap::iterator iter;
 
    string homo_end = "</homo";
    string homo_sapiens_beg = "<homo_";
    string article_beg = "<artic";
 
    unsigned long int pos = 0;
    string name_of_homo_sapiens;
 
    string s;           //считанная строка
    string subs;      //получение подстроки из s
    string new_s;   //очистка s от атрибутов
 
    while(getline(my_base, s))// пока не достигнут конец файла, помещать очередную строку в переменную s
    {
        subs = s.substr(0, 6);
        
        if (subs == homo_sapiens_beg)
        {
            getline(my_base, s);//<soname>...</soname>
            new_s=handling_string_soname(s);
            name_of_homo_sapiens = new_s;
 
            while(subs != homo_end)//subs == article_beg
            {
                getline(my_base, s);//<article>...</article>
                subs = s.substr(0, 6);
                if(subs == article_beg)
                {
                    new_s=handling_string_article(s);
                    //добавление нового значения к текущему ключу
                    homo_homo_sapiens.insert(make_pair(name_of_homo_sapiens, new_s));
                }
                else
                {
                    break;
                }
            }
            //вывод всех значений
            for (iter = homo_homo_sapiens.lower_bound(name_of_homo_sapiens); iter != homo_homo_sapiens.upper_bound(name_of_homo_sapiens); iter++)
            {
                cout << iter->second << endl;
            }
            cout << endl;
        }
    }
    
    //здесь не выводит по ключу
    name_of_homo_sapiens="Ivanov";
    cout << "\n\n";
    for (iter = homo_homo_sapiens.lower_bound(name_of_homo_sapiens); iter != homo_homo_sapiens.upper_bound(name_of_homo_sapiens); iter++)
    {
        cout << iter->second << endl;
    }
 
    my_base.close(); //закрыть файл
    return 0;
}
xml-файл:
Кликните здесь для просмотра всего текста

<?xml version="1.0"?>
<homo>
<homo_sapiens>
<soname>Ivanov</soname>
<article>Influence furry seals on the stress tolerance of students in the session.</article>
<article>Peter Dreaming.</article>
<article>The moon is an old abandoned alien ship.</article>
</homo_sapiens>
<homo_sapiens>
<soname>Petrov</soname>
<article>Einstein's theory refuted! Say "NO" synchrotron!</article>
<article>Telegonia real! Interviews of the researcher and the sorcerer of the village Novostarovo.</article>
</homo_sapiens>
<homo_sapiens>
<soname>Sidorov</soname>
<article>Philip has Foie Gras! Pictures from the scene.</article>
<article>Peter Bentley again got drunk in a nightclub.</article>
<article>Nastya Ferrari shares fashion tips. Which shoes are not ashamed to go out in the new season.</article>
<article>Dominique Joker opened a beauty salon! Interviews from the solarium.</article>
</homo_sapiens>
</homo>
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru