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

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

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

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

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

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

Считать количество строк в файле и записать в масив - C++
есть класс Book #ifndef BOOK_H_ #define BOOK_H_ #include<iostream> #include<string> using namespace std; class Book { ...

Multimap. Ошибка operator+ not implemented in type multimap - C++
Я начинающий в си, есть задача подсчета частоты встречаемости символов, делал через ассоциативный массив map<char, int>, программа...

Как в файле удалить n байт, начиная с заданной позиции - C++
Вопрос: как в файле удалить n байт начиная с заданной позиции? (файловый ввод-вывод в стиле C++)

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

Multimap STL - работает только запись в файл, поиск в файле не работает - C++
И снова здравствуйте. Снова я прошу вашей помощи. Переделал программу с мапом в мульти мап, но что то пошло не так и работает только запись...

Записать в файл несколько строк, а затем записать несколько строк из этого файла в другой - C++
Заранее создать текстовый файл 1.txt и записать в него несколько строк текста. Программа должна получить из него второй файл 2.txt, в...

9
Aneron
158 / 157 / 12
Регистрация: 20.04.2010
Сообщений: 570
29.03.2016, 09:08 #2
В чем ,собственно, проблема?
0
Alex_msk
0 / 0 / 0
Регистрация: 09.03.2016
Сообщений: 10
29.03.2016, 09:14  [ТС] #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 не смог разобраться.
0
Aneron
158 / 157 / 12
Регистрация: 20.04.2010
Сообщений: 570
29.03.2016, 09:18 #4
У тебя в цикле идет выборка. При первом get line будет получена нулевая строка, при втором - пераая и т.д..
0
Alex_msk
0 / 0 / 0
Регистрация: 09.03.2016
Сообщений: 10
29.03.2016, 09:27  [ТС] #5
ты предлагаешь просто записывать номер строки? - так не подходить. Мне нужно запомнить позицию, что бы потом быстро перейти к этому строку.
0
Aneron
158 / 157 / 12
Регистрация: 20.04.2010
Сообщений: 570
29.03.2016, 09:44 #6
Давай для начала разберемся, что ты хочешь.
Что ты собираешься делать с данной позицией?
0
Alex_msk
0 / 0 / 0
Регистрация: 09.03.2016
Сообщений: 10
29.03.2016, 09:52  [ТС] #7
"Проиндексировать входной текстовый файл, собирая информацию в указанную структуру данных (сами строки не загружаются, запоминается только их позиция и служебная информация"
0
Aneron
158 / 157 / 12
Регистрация: 20.04.2010
Сообщений: 570
29.03.2016, 10:35 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Запоминай значит положение. fseek-ом будешь прыгать.
Начала новой строки легко высчитать. Первая строка - int aPos = 0.
Вторая - aPos = aPos + k.size();и т.д..
1
Alex_msk
0 / 0 / 0
Регистрация: 09.03.2016
Сообщений: 10
29.03.2016, 13:02  [ТС] #9
можешь написать полностью код. я не совсем понял.
0
Aneron
158 / 157 / 12
Регистрация: 20.04.2010
Сообщений: 570
29.03.2016, 13:20 #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();
1
29.03.2016, 13:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2016, 13:20
Привет! Вот еще темы с ответами:

Измнение позиции в файле - C++
Здравствуйте. Я не знаю ,как смещать позицию курсора в файле. Мне нужно вывести классы с макс.кол-вом учеников. И в самом файле...

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

Запись и считывание с позиции в файле! - C++
Нужно лабу накатать, ищу информацию по этой теме! Пока не очень успешно! Если кто может подкиньте информацию или где хоть искать!^^ ...

Как в С++ из файла записать в массив,в файле матрица 3Х3 - C++
Всё в названии =(


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

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

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