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

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

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

имитировать работу препроцессора #define - C++

12.12.2012, 14:06. Просмотров 269. Ответов 1
Метки нет (Все метки)

подскажите пожалуйста с чего начать.
задача выглядит так: дан файл с текстом программы на С++, имитировать работу препроцессора #define, заменить все символы на соответствующие им в директиве, и удалить из текста программы саму директиву.
не могу понять как считать текст из файла, и что использовать для поиска.

Добавлено через 1 час 31 минуту
как я думаю нужно сначала найти "#define" в тексте, потом запомнить слово которое он заменяет, и запомнить на что заменяет, и дальше идти по всему тексту и делать соответствующие замены.
трудность вызывает то, что я еще плохо знаю функции string и не знаю что лучше применить чтобы все работало.
спасибо тем кто откликнется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2012, 14:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос имитировать работу препроцессора #define (C++):

Русификация Си++ с помощю препроцессора и #define - C++
Возможна русификация всех Си++ которые позволяют использовать кириллицу в #define. // Заголовочный файл для русификации служебных слов...

Назначение директив препроцессора: #ifndef, #define, #endif - C++
Объясните, что обозначают эти директивы? Заем это использовать в классах? #ifndef myclass #define myclass class someclass { ...

Нюансы использования директивы препроцессора #define: найти и исправить ошибки в коде - C++
Добрый день. Помогите, пожалуйста, в решении задачи. Задача простая, но хочется разобраться с #define. У меня есть 3 файла: заголовочный...

Имитировать работу АЗС - C++
Есть "Name" сеть автозаправок из N автозаправок. На заправках продается топливо разных видов. Поставка топлива на заправки...

Директивы препроцессора Составить программу, использующую директивы препроцессора - C++
1) Задать константы M1,M2,...,M5 и вычислить M1+ 2M2 + 3M3 + 4M4 + 5M5 2) С помощью директив #if, #else, #elif осуществлять выбор строк...

Обработка препроцессора - C++
Дня доброго. Есть небольшая проблема #include<iostream> using namespace std; #define M 10 #ifndef N #define N 20 #endif ...

1
Nikolai699
16 / 16 / 3
Регистрация: 15.03.2012
Сообщений: 106
13.12.2012, 19:22  [ТС] #2
вот что у меня получилось, но тут куча ошибок, на словах то понятно что сделать, но как реализовать затрудняюсь.
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
#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;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2012, 19:22
Привет! Вот еще темы с ответами:

директива препроцессора - C++
Не получается запустить простенькую программу на С++ Borland,вроде сделал все как надо,но выдает ошибку что не может подключиться к...

Директивы препроцессора - C++
помогите плз с прогой Директивы препроцессора Составить программу, использующую директивы препроцессора 1) вычислить...

макрос препроцессора - C++
Здравствуйте ув. форумчани. Читаю книгу &quot;Философия с++. Введение в стандартный с++&quot;. Дошел к одному примеру. И все компилируется, но...

Директивы препроцессора - C++
Помогите разобраться. Я не могу понять как работают директивы препроцессора. Где находится файл описания, файл реализации, нужно ли...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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