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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
fallti
0 / 0 / 0
Регистрация: 04.03.2010
Сообщений: 18
#1

Функция считывания из файла для map - C++

04.03.2010, 17:28. Просмотров 1778. Ответов 9
Метки нет (Все метки)

в файле задана последовательность ключ-точка(map<string,MYPOINT>). Помогите, пожалуйста, написать функцию считывания из файла, а то везде есть функция только для записи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2010, 17:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция считывания из файла для map (C++):

Функция для считывания символа из файла в переменную wchar_t - C++
Вот такой вот в общем код. Какой функцией можно считывать посимвольно символы из файла в переменную wchar_t? get(s) не подходит,...

Есть ли в С++ функция для считывания информации с файла с подробной настройкой? - C++
Есть ли в С++ функция для считывания информации с файла с подробной настройкой?Мне нужно будет потом их записать в массив. Ну вот например...

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

Функция seekq, вместо повторного считывания файла (txt) - C++
Всем привет, ребят. Я тут новый и это мой первый пост :) И вопрос у меня вот какой.. Мне нужно переписать этот код так, чтобы считывание...

Функция для считывания строки - C++
Требуется написать функция для считывания строки, используя динамическое выделения памяти? Как это по лучше сделать подскажите? Было бы...

Функция для считывания нажатых клавиш. - C++
Подскажите какую нибудь функцию которая бы считывала все нажатия клавиш? Например чтоб запустить приложение WIN32 и чтоб она считывала...

9
CheshireCat
Эксперт С++
2896 / 1245 / 78
Регистрация: 27.05.2008
Сообщений: 3,411
04.03.2010, 17:30 #2
Приведи эту функцию. Функция считывания будет очень-очень похожей.
0
fallti
0 / 0 / 0
Регистрация: 04.03.2010
Сообщений: 18
04.03.2010, 17:32  [ТС] #3
C++
1
2
3
4
void SaveObj(fstream &outFile){
   for(map < string, MYPOINT> :: iterator i = arrObj.begin(); i != arrObj.end(); i++)
      outFile<< i -> first << ' ' << i -> second;
}
но при считывании с файла мы же должны использовать буфер, так?
0
easybudda
Модератор
Эксперт CЭксперт С++
9716 / 5667 / 971
Регистрация: 25.07.2009
Сообщений: 10,910
04.03.2010, 17:34 #4
fallti, пример входных данных приведите...
0
fallti
0 / 0 / 0
Регистрация: 04.03.2010
Сообщений: 18
04.03.2010, 17:39  [ТС] #5
театр х у
большой 0 0
средний 6 8
малый 11 7

Добавлено через 1 минуту
для точки написана структура
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#pragma once
 
#include <iostream>
using namespace std;
struct MYPOINT{
    int x,y;
    MYPOINT():x(0),y(0){}
    MYPOINT(int nX,int nY):x(nX),y(nY){}
    MYPOINT(const MYPOINT &cop):x(cop.x),y(cop.y){}
    friend istream &operator>>(istream &input,MYPOINT &op){
        input>>op.x>>op.y;
        return input;
    }
    friend ostream &operator<<(ostream &output,MYPOINT &op){
        output<<op.x<<op.y;
        return output;
    }   
};
0
CheshireCat
Эксперт С++
2896 / 1245 / 78
Регистрация: 27.05.2008
Сообщений: 3,411
04.03.2010, 18:24 #6
Тогда где-то так (не проверял!):
C++
1
2
3
4
5
6
7
8
void LoadObj(ifstream &inFile, map<string, MYPOINT> &dest){
   while(!inFile.eof()) {
      string key;
      MYPOINT pt;
      inFile >> key >> pt;
      dest[key] = pt;
   }
}
1
fallti
0 / 0 / 0
Регистрация: 04.03.2010
Сообщений: 18
04.03.2010, 18:46  [ТС] #7
Спасибо, я даже и не думал, что можно на столько просто сделать...
0
easybudda
Модератор
Эксперт CЭксперт С++
9716 / 5667 / 971
Регистрация: 25.07.2009
Сообщений: 10,910
04.03.2010, 18:52 #8
fallti, вот, чё получилось
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
#include <iostream>
#include <fstream>
#include <string>
#include <map>
 
struct Point {
    int x;
    int y;
};
 
class Buf {
public:
    Buf() {}
    ~Buf() {}
    bool addToMap(std::map<std::string, Point>& m){
        std::pair<std::map<std::string, Point>::iterator, bool> im;
        im = m.insert(std::pair<std::string, Point>(name, pt));
        return im.second;
    }
    friend std::istream& operator >> (std::istream& ist, Buf& b){
        ist >> b.name >> b.pt.x >> b.pt.y;
        return ist;
    }
 
private:
    std::string name;
    Point pt;
};
 
int main(){
    const char* file_name = "teatr.txt";
    std::string tmp;
    std::map<std::string, Point> arr;
    std::ifstream ifs(file_name);
    if ( !ifs.is_open() ){
        std::cerr << "Can't open input file" << std::endl;
        return 1;
    }
    // пропустить первую строку
    std::getline(ifs, tmp);
    Buf buf;
    while ( ifs >> buf){
        if ( !buf.addToMap(arr) ){
            std::cerr << "Error adding elements" << std::endl;
            return 1;
        }
    }
    ifs.close();
 
    for ( std::map<std::string, Point>::const_iterator i = arr.begin(); i != arr.end(); ++i )
        std::cout << i->first << ' ' << i->second.x << ' ' << i->second.y << std::endl;
 
    return 0;
}
Но у CheshireCat красивше, не спорю
1
fallti
0 / 0 / 0
Регистрация: 04.03.2010
Сообщений: 18
04.03.2010, 19:08  [ТС] #9
спасибо, тоже очень благодарен
0
easybudda
Модератор
Эксперт CЭксперт С++
9716 / 5667 / 971
Регистрация: 25.07.2009
Сообщений: 10,910
04.03.2010, 19:26 #10
Цитата Сообщение от CheshireCat Посмотреть сообщение
Тогда где-то так (не проверял!):
Тут, кстати, вот из этой темы подводный камень скрывается в плане организации цикла считывания из файла...
0
04.03.2010, 19:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2010, 19:26
Привет! Вот еще темы с ответами:

Нужна небуферизированная функция для считывания одного символа - C++
Здавствуйте! Мне нужна небуферизированная функция для считывания одного символа. В Window был getch(), теперь нужно найти аналог. ...

Цикл для построчного считывания из файла - C++
Добрый день, бьюсь над следующей проблемой. Мне необходимо считать из файла, данные в структуру. В текстовом файле данные хранятся...

Написать функцию шаблон, для считывания из файла - C++
Написать функцию шаблон, для считывания из файла

макрос assert() для считывания даных из файла из указаного диапазона - C++
Нужно считать даные из текстового файла и определить сколько есть чисел, букв, пробелов и т.д. Это всё я сделал. Но как использовать...


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

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

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