Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 48

Парсинг текстового файла в map

23.01.2016, 23:03. Показов 4068. Ответов 18
Метки map, txt (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Подскажите, пожалуйста, как парсить текстовый файл в map. Например, есть файл, в котором записано следующее:
1 a
2 b
3 c

Не совсем понимаю, как заносить это в map<int, string>. То есть понятно, что первый символ - это ключ, а второй значение и так мы будем циклом проходить по всему файлу. Проблема состоит в том, как занести это в map
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.01.2016, 23:03
Ответы с готовыми решениями:

Считывание и парсинг данных с текстового файла
Как правильно считать такую строку с етого файла? 3 circle 3.0 3.0 5.0 square 0.0 0.0 0.0 4.0 4.0 4.0 4.0 0.0 triangle 3.0 3.0 0.0...

Нарезка текстового файла в map
Необходимо текстовый файлы такого вида В нем хранятся значения вида идентификатор = значение (воспользовался map) имя - это имя а...

Парсинг текстового файла
Здравствуйте Мне нужно написать бат файл, который будет читать строку из текстового файла, заносить её в переменную и создавать папку с...

18
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
23.01.2016, 23:14
Цитата Сообщение от oooooowl Посмотреть сообщение
Не совсем понимаю, как заносить это в map<int, string>.
Делай пару и вставляй: http://www.cplusplus.com/reference/map/map/insert/
1
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
23.01.2016, 23:21
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

oooooowl, что-то вроде такого:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <fstream>
#include <iterator>
#include <map>
 
template <typename A, typename B>
struct key_value : std::pair<A, B> {};
 
template <typename A, typename B>
std::istream & operator>>(std::istream & s, key_value<A, B> & p)
{
    return s >> p.first >> p.second;
}
 
int main()
{
    std::ifstream file("input.txt");
    
    std::istream_iterator< key_value<int, std::string> > beg(file), end;
    
    std::map<int, std::string> map(beg, end);
}
3
23.01.2016, 23:28

Не по теме:

Цитата Сообщение от DrOffset Посмотреть сообщение
oooooowl, что-то вроде такого:
Шуточки шутишь?:)

0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
24.01.2016, 00:29
Цитата Сообщение от nord_v Посмотреть сообщение
Шуточки шутишь?
Теперь писать на плюсах так называется?
А с применением нового стандарта тогда как? Комедию ломать?
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
24.01.2016, 00:35
Цитата Сообщение от Mr.X Посмотреть сообщение
Теперь писать на плюсах так называется?
Так называется предложение такого кода ТС, который не знает, как элемент в map добавить.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
24.01.2016, 00:49
Цитата Сообщение от nord_v Посмотреть сообщение
Так называется предложение такого кода ТС, который не знает, как элемент в map добавить.
А как же ему писать? На Си?
Кстати, для таких студентов я уже предлагал предложение:
Цитата Сообщение от Mr.X Посмотреть сообщение
Кстати, мысль: неплохо было бы в дополнение к сишному и плюсовому разделам создать еще раздел "Си с классами", где бы обретались все сишники, воображающие, что они "изучают" С++.
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
24.01.2016, 00:54
Цитата Сообщение от Mr.X Посмотреть сообщение
А как же ему писать? На Си?
По ссылке, во 2-ом посте, Си?
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
24.01.2016, 01:01
Цитата Сообщение от nord_v Посмотреть сообщение
По ссылке, во 2-ом посте, Си?
Ну, если вы предлагаете обрабатывать элементы по одному в цикле, то это сишный подход. В плюсах для этого есть алгоритмы.
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
24.01.2016, 01:08
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, если вы предлагаете
Где я предлагал?
Цитата Сообщение от Mr.X Посмотреть сообщение
В плюсах для этого есть алгоритмы.
Не нужно доводить идею до абсурда.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
24.01.2016, 01:15
Цитата Сообщение от nord_v Посмотреть сообщение
Где я предлагал?
А что же вы тогда предлагали?
Цитата Сообщение от nord_v Посмотреть сообщение
Не нужно доводить идею до абсурда.
Т.е. алгоритмы у вас абсурдом считаются? В плюсах это основное средство работы с контейнерами.
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
24.01.2016, 01:19
Цитата Сообщение от Mr.X Посмотреть сообщение
А что же вы тогда предлагали?
Ткни носом, где я предлагал.

Добавлено через 1 минуту
Цитата Сообщение от Mr.X Посмотреть сообщение
Т.е. алгоритмы у вас абсурдом считаются?
У нас, не алгоритмы абсурдом считаются, а отбрасывание всего, что не алгоритмы.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
24.01.2016, 01:31
nord_v, что-то вы самозациклились как-то... И давайте все же соблюдать взаимную вежливость...
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
24.01.2016, 01:33
Цитата Сообщение от Mr.X Посмотреть сообщение
И давайте все же соблюдать взаимную вежливость...
В чём невежливость?
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
24.01.2016, 01:33
Цитата Сообщение от nord_v Посмотреть сообщение
У нас, не алгоритмы абсурдом считаются, а отбрасывание всего, что не алгоритмы.
Ну так у Степанова все в комплексе: контейнеры, итераторы и алгоритмы. А выучить только контейнеры и пилить их с помощью циклов - это сишня и есть.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
24.01.2016, 07:33
Обычный плюсовый подход, ничего сверъествественного в коде нет.
+ для пару слов тех кто не понял за каким тут key_value вместо непосредственно std::pair - чтобы перегрузить operator >> для std::pair его придется в std поместить, что не есть хорошо. Наследование std::pair позволяет избежать этого.
3
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
24.01.2016, 09:05
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

oooooowl, Если вам вариант попроще, чем предложил DrOffset, то вот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <fstream>
#include <map>
using namespace std;
 
int main() {
    map<int,string> coll;
    ifstream f("a.txt");
    int tmp;
    string str;
    while(!f.eof()) {
        f >> tmp;
        f >> str;
        coll[tmp] = str;
    }
    return 0;
}
2
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
24.01.2016, 10:30
Ну,
Цитата Сообщение от makfak Посмотреть сообщение
попроще
это только для тех, для кого итераторы и алгоритмы - это что-то дикое и новое. Так-то именно с них и надо плюсы начинать изучать.
А вот циклы в реальности гораздо опаснее, так как в них гораздо легче ошибиться с диапазонами, условиями выхода, и т.д.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
24.01.2016, 10:33
Mr.X, Нет, я-то знаю, что такое итераторы/алгоритмы/etc. Я для понимания ТСа попроще написал.

Добавлено через 1 минуту
Хотя, возможно, я теперь его только запутал ещё больше.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.01.2016, 10:33
Помогаю со студенческими работами здесь

Парсинг текстового файла
Прощу помощи. Есть файл такой структуры: Из него нужно вытащить фрагменты, который разделены в тестке '9c3e' и ':' и записать...

Парсинг текстового файла
Уважаемые форумчане, приношу свои извинения за доставленные неудобства в который раз. Но передо мной появилась сложная для меня задача. ...

Парсинг текстового файла
В общем проблема такая. Имеется текстовый файл такого вида: Группа=Холодные напитки Пиво &quot;Сибирская корона&quot;=100 Пиво...

Парсинг текстового файла
Добрый день. Прошу помощи как можно распарсить этот текстовый файл.

Парсинг текстового файла
Ребята, помогите с программой) Суть вот в чем: нужно &quot;выковыривать&quot; часть информации из текстового документа, и записывать ее в...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru