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

Как записать в multimap позиции строк в файле? - C++

Восстановить пароль Регистрация
 
Alex_msk
0 / 0 / 0
Регистрация: 09.03.2016
Сообщений: 10
29.03.2016, 07:46     Как записать в multimap позиции строк в файле? #1
Подскажите, пожалуйста, как записать в контейнер(multimap) позиции строк в файле.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
29.03.2016, 09:08     Как записать в multimap позиции строк в файле? #2
В чем ,собственно, проблема?
Alex_msk
0 / 0 / 0
Регистрация: 09.03.2016
Сообщений: 10
29.03.2016, 09:14  [ТС]     Как записать в multimap позиции строк в файле? #3
C++
1
2
3
4
5
6
7
8
9
typedef std::multimap<int,int>  Info;
std::map< char, Info> TextInfo;
 std::ifstream file("s.txt");
    for (std::string k;getline(file,k);)
        {
            int pos = ??;
            int len=k.length();
            TextInfo[k[0]].insert(std::make_pair(pos,len));
        }
какую функция использовать для запоминание позиции ? с ftell не смог разобраться.
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
29.03.2016, 09:18     Как записать в multimap позиции строк в файле? #4
У тебя в цикле идет выборка. При первом get line будет получена нулевая строка, при втором - пераая и т.д..
Alex_msk
0 / 0 / 0
Регистрация: 09.03.2016
Сообщений: 10
29.03.2016, 09:27  [ТС]     Как записать в multimap позиции строк в файле? #5
ты предлагаешь просто записывать номер строки? - так не подходить. Мне нужно запомнить позицию, что бы потом быстро перейти к этому строку.
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
29.03.2016, 09:44     Как записать в multimap позиции строк в файле? #6
Давай для начала разберемся, что ты хочешь.
Что ты собираешься делать с данной позицией?
Alex_msk
0 / 0 / 0
Регистрация: 09.03.2016
Сообщений: 10
29.03.2016, 09:52  [ТС]     Как записать в multimap позиции строк в файле? #7
"Проиндексировать входной текстовый файл, собирая информацию в указанную структуру данных (сами строки не загружаются, запоминается только их позиция и служебная информация"
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
29.03.2016, 10:35     Как записать в multimap позиции строк в файле? #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Запоминай значит положение. fseek-ом будешь прыгать.
Начала новой строки легко высчитать. Первая строка - int aPos = 0.
Вторая - aPos = aPos + k.size();и т.д..
Alex_msk
0 / 0 / 0
Регистрация: 09.03.2016
Сообщений: 10
29.03.2016, 13:02  [ТС]     Как записать в multimap позиции строк в файле? #9
можешь написать полностью код. я не совсем понял.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2016, 13:20     Как записать в multimap позиции строк в файле?
Еще ссылки по теме:

Передача потока (текущ.позиции курсора в файле) как аргумент функции C++
Как записать мусор от текущей позиции до заданной? C++ WinAPI
Multimap. Ошибка operator+ not implemented in type multimap C++

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

Или воспользуйтесь поиском по форуму:
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
29.03.2016, 13:20     Как записать в multimap позиции строк в файле? #10
C++
1
2
3
4
5
6
7
8
9
10
11
int aFileWalker = 0;
std::string aBuff;
std::ifstream aFile("s.txt");
while(std::getline(aFile,aBuff))
{
std::cout << aFileWalker << std::endl;//Позиция начала строки
aFileWalker += aBuff.size();
aFileWalker << aFileWalker << std::endl;//Позиция конца строки
aFileWalker += 1; //Позиция начала сл. строки
}
aFile.close();
Yandex
Объявления
29.03.2016, 13:20     Как записать в multimap позиции строк в файле?
Ответ Создать тему
Опции темы

Текущее время: 00:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru