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

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

Войти
Регистрация
Восстановить пароль
 
Alex_msk
0 / 0 / 0
Регистрация: 09.03.2016
Сообщений: 10
#1

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

29.03.2016, 07:46. Просмотров 232. Ответов 9
Метки нет (Все метки)

Подскажите, пожалуйста, как записать в контейнер(multimap) позиции строк в файле.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2016, 07:46     Как записать в multimap позиции строк в файле?
Посмотрите здесь:

C++ Запись и считывание с позиции в файле!
C++ как в файле удалить n байт, начиная с заданной позиции
Multimap. Как получить кол-во элементов по ключу? C++
C++ Считать количество строк в файле и записать в масив
Как в С++ из файла записать в массив,в файле матрица 3Х3 C++
Как искать в файле и записать его в новый файл? C++
Передача потока (текущ.позиции курсора в файле) как аргумент функции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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 позиции строк в файле?
Еще ссылки по теме:

Multimap STL - работает только запись в файл, поиск в файле не работает C++
Multimap. Ошибка operator+ not implemented in type multimap C++
Как узнать сколько в файле строк? C++
C++ Записать в файл несколько строк, а затем записать несколько строк из этого файла в другой
Измнение позиции в файле 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 позиции строк в файле?
Ответ Создать тему
Опции темы

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