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

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

Войти
Регистрация
Восстановить пароль
 
Nikolai699
16 / 16 / 3
Регистрация: 15.03.2012
Сообщений: 106
#1

map<string, string>define_map - C++

14.12.2012, 00:46. Просмотров 516. Ответов 0
Метки нет (Все метки)

нужно имитировать работу препроцессора #define
у нас есть файл из которого считали программу на С++.
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
list<string> word_list;
list<string>::iterator i;
 
string str;
//заполняю word_list
while(1){
getline(in,str);
word_list.push_back(str);
if(in.eof())
break;
}
//затем
//создаю карту
map<string, string>define_map;
map<string, string>::iterator it;
//потом ищу #define;string def="define";
//прохожу по word_list
for(i=word_list.begin(); i!=word_list.end();i++)
{
if(*i=def)
define_map.insert(map<string, string>(*i++),*i+2);
word_list.erase(def);
if(*i==it->first)
*i=it->second;
}
когда я нахожу #define я должен передать значение ключа и на что заменить в карту. как это правильно будет выглядеть.
Вот что у меня сейчас есть.
дальше пока не знаю что делать.
#include<cstdlib>
#include<iostream>
#include<fstream>
#include<list>
#include<string>
#include<map>
using namespace std;
 
int main(){
    ifstream in("text.txt");
    ofstream off("off.txt");
    if(!off)
        cout<<"error!!!"<<endl;
    else
        cout<<"ok"<<endl;
 
    list<string> word_list;
    list<string>::iterator i;
 
    string def="#define";
    string str;
    //заполняю word_list
    while(1){
        getline(in,str);
        word_list.push_back(str);
        if(in.eof())
            break;
    }
    
    //создаю карту
    map<string, string>define_map;
    map<string, string>::iterator it;
 
    //прохожу по word_list
    for(i=word_list.begin(); i!=word_list.end();i++)
    {
        if(*i=def)
            define_map.insert(map<string, string>(*i++),*i+2);
        word_list.erase(def);
        if(*i==it->first)
            *i=it->second;
    }
    
    for(i=word_list.begin(); i!=word_list.end(); i++)
        cout<<*i<<endl;
}
Добавлено через 4 часа 54 минуты
подскажите как вообще можно сделать чтобы следующий за #define элемент помещался в карту define_map в качестве ключа и следующий элемент помещался в качестве его значения
if(*i==def)
define_map.insert(map<string, string>(*i++),*i+2);
так не прокатит кажись, и вообще можно ли так сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2012, 00:46     map<string, string>define_map
Посмотрите здесь:

Map и string - C++
Добрый день, уважаемые программисты! Прошу вас, пояснить пожалуйста следующий код : #include &lt;iostream&gt; #include &lt;string&gt; ...

Преобразование map в string - C++
Доброго времени суток. Есть программа для подсчета количества слов в тексте #include &lt;iostream&gt; #include &lt;fstream&gt; #include...

map <string[],double> - C++
Возникла необходимость в конструкции вида: =&gt;значение выбрал map &lt;string,double&gt; но как определять элементы никак не разберусь ...

Конвертирование из vector<string> в map - C++
Здравствуйте! Подскажите, пожалуйста, как из vector&lt;string&gt; считать элементы вектора в map. Изначально дан текстовый файл, в котором...

Std::map <string, class> ОШИБКА C2512 - C++
Есть следующий код: #include &lt;vector&gt; #include &lt;map&gt; class Aluy { public: Aluy (int x, int y) { int z = x+y; ...

Куда будет указывать указатель в std::map<string,pointer *>? - C++
Чисто теоретически,хотелось бы узнать у знатоков C++ Допустим есть некий контейнер std::map&lt;const string, someClass *&gt; container И...

Невозможно поместить строку map<string,float>pairs_map; в .h-файл - C++
Делаю проект,есть 3 файла : // project_header.h #ifndef PROJECT_HEADER_H_INCLUDED #define PROJECT_HEADER_H_INCLUDED #include...

Отличие string и String - C++
чем отличается String от string ?

Преобразование string* в string - C++
Здравствуйте, друзья. У меня есть класс. В нем описано поле string *GPS; В конструкторе выделяю память. Передаю именно *_GPS для...

string = define + string ; - C++
ОС: Win7 Компилятор: Microsoft Visual Studio 8 | -------------------------------------------- ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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