29 / 27 / 1
Регистрация: 27.09.2012
Сообщений: 123

Символ новой строки

16.08.2013, 18:16. Показов 7919. Ответов 95
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет) С маппировал текстовый файл в память.
C++
1
2
3
4
5
6
7
HANDLE file = CreateFile(fileNameWChar, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    
DWORD fileSize = GetFileSize(file, NULL);
 
HANDLE fileMap =  CreateFileMapping(file, NULL, PAGE_READWRITE, 0, 0, NULL);
 
char *pvFileSrc = (char *)MapViewOfFile(fileMap, FILE_MAP_WRITE, 0, 0, fileSize);
если в файле строки находятся на разных строках
пример:
cyber
forum

То в указатели pvFileSrc будет сплошной текст (cyberforum).

Пробовал strstr(pvFleSrc, "\n"), strcmp(pvFleSrc, "\n"), ничего не выходит((

Пожалуйста, подскажите как определить строку.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.08.2013, 18:16
Ответы с готовыми решениями:

Символ новой строки в MFC
При работе в MFC нужно вести протокол работы, то есть, сделали операцию a + b = c, записали в окно и т.д. Я создал Edit Control, с...

Std::cin, символ новой строки
Подскажите, куда в данном примере после каждого cin'а девается символ новой строки? Насколько помню cin и cin.get его после себя оставляют...

Зачем здесь символ новой строки?
Стивен Прата, Язык программирования С++, глава 7, пример 7 Никак не пойму, зачем здесь double temp; int i; for(i=0;...

95
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
16.08.2013, 22:54
Студворк — интернет-сервис помощи студентам
alsav22, это не может быть затратно. Честно говоря мне это делать лень, но ради вашего "большого спасиба" я готов. Если согласны тогда заключим пари

P.S.: на 100% я сам не уверен. Я уверен на 99%.

Добавлено через 2 минуты
Цитата Сообщение от alsav22 Посмотреть сообщение
Вопрос в количестве памяти, что не хватит, чтобы с таким файлом в памяти работать.
Функция MapViewOfFile для того и создана, чтобы не работать с большими объемами памяти.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
16.08.2013, 22:58
Цитата Сообщение от castaway Посмотреть сообщение
Честно говоря мне это делать лень, но ради вашего "большого спасиба" я готов.
Вы ради ТС сделайте что-то. Я выкладываю рабочие коды, а от вас ТС, кроме размышлений на тему, ничего конкретного не увидел.

Добавлено через 3 минуты
Цитата Сообщение от castaway Посмотреть сообщение
Функция MapViewOfFile для того и создана, чтобы не работать с большими объемами памяти.
Этого я не знаю, с WinAPI не знаком, верю на слово. Делайте, флаг в руки...
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
16.08.2013, 23:09
Цитата Сообщение от alsav22 Посмотреть сообщение
Вы ради ТС сделайте что-то. Я выкладываю рабочие коды, а от вас ТС, кроме размышлений на тему, ничего конкретного не увидел.
Странно что не увидели, я приводил полезные для ТС примеры.
Символ новой строки
Символ новой строки
Только я вот одной вещи не пойму.., зачем я перед вами отчитываюсь. Вы придираетесь без повода. В чем причина такого поведения? Я вас чем-то обидел?

Добавлено через 2 минуты
Цитата Сообщение от alsav22 Посмотреть сообщение
Делайте, флаг в руки...
Слава богу флаг у меня давно в руках
0
16.08.2013, 23:51

Не по теме:

Цитата Сообщение от castaway Посмотреть сообщение
я вот одной вещи не пойму.., зачем я перед вами отчитываюсь
И я не пойму... Не отчитывайтесь...
Цитата Сообщение от castaway Посмотреть сообщение
Вы придираетесь без повода.
Где вы придирки увидели? Придираться пока не к чему...
Цитата Сообщение от castaway Посмотреть сообщение
я приводил полезные для ТС примеры.
Направление темы уже сменилось, примеры про другое...
Цитата Сообщение от castaway Посмотреть сообщение
Слава богу флаг у меня давно в руках
Флаг в руках - хорошо, ещё бы хоть какой-то рабочий код увидеть (имеется ввиду, как строки поменять)...

0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
17.08.2013, 00:24
Цитата Сообщение от alsav22 Посмотреть сообщение
Где вы придирки увидели?
Например тут видел:
Цитата Сообщение от alsav22 Посмотреть сообщение
Вы ради ТС сделайте что-то.
Я выкладываю рабочие коды, а от вас ТС, кроме размышлений на тему, ничего конкретного не увидел.
Думаю спорить не имеет смысла... Тут все понятно.
Были и коды, и 3 благодарности от ТС, один ты остался не доволен.
Цитата Сообщение от alsav22 Посмотреть сообщение
Направление темы уже сменилось, примеры про другое...
Про другие вопросы создают другие темы. Я приводил актуальные ответы на действующие вопросы.
Цитата Сообщение от alsav22 Посмотреть сообщение
Флаг в руках - хорошо, ещё бы хоть какой-то рабочий код увидеть (имеется ввиду, как строки поменяь)...
Хоть какой-то рабочий код вы уже могли увидеть если бы открывали глаза на все сообщения.
Позвольте я перейду с вами на "ты". Спасибо. Ты обижаешься - это очевидно, за что - для меня до сих пор остается загадкой с одной стороны,
с другой - все очевидно, тебе мало лет, ты обижаешься что к тебе обращено меньше внимания.. а! Я знаю. у тебя недостаток внимания в детском возрасте.
Очевидно же, просто так на людей не обижаются
Но есть и еще одна сторона - неадекватность. Я даже теряюсь в сомнениях.
Где я не ошибся?

Добавлено через 5 минут
vodilawofer, ТС, скажи пожалуйста, я тебе хоть в чем-то помог?
0
17.08.2013, 00:25

Не по теме:

Продолжаете оправдываться?
Как много пустых слов... Код бы увидеть...

0
17.08.2013, 00:26

Не по теме:

Цитата Сообщение от alsav22 Посмотреть сообщение
Не по теме:
Продолжаете оправдываться?
Как много пустых слов... Код бы увидеть...
Золотые слова! Когда нечего сказать...

0
17.08.2013, 00:28

Не по теме:

Цитата Сообщение от castaway Посмотреть сообщение
Золотые слова! Когда нечего сказать...
Ещё более золоьые, когда нечего показать...

0
17.08.2013, 00:41  [ТС]

Не по теме:

напряжение "скакнуло", и код удалился ;)

0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
17.08.2013, 00:44
Цитата Сообщение от vodilawofer Посмотреть сообщение
напряжение "скакнуло", и код удалился
Неадекватность перескочила все возможные границы.. Какой удалился код ?
0
29 / 27 / 1
Регистрация: 27.09.2012
Сообщений: 123
17.08.2013, 02:33  [ТС]
castaway, да, помогли. А еще больше "помогло" электричество, которое "скочет".

Добавлено через 1 минуту
Цитата Сообщение от castaway Посмотреть сообщение
Неадекватность перескочила все возможные границы.. Какой удалился код ?
там где я все делал. все мои никчемные функции удалились(( хотя с другой стороны посмотреть все чисто ни какого мусора. Твори ни хочу)

Добавлено через 5 минут

Не по теме:

у меня чутьчуть неполучается( почему то со сдвигом не получается.



Добавлено через 1 час 38 минут
файл маппируется не правильно.

вот что находиться в pvFileSrc

Кликните здесь для просмотра всего текста
When a file mapping object that is backed by the paging file is created, the caller can specify whether MapViewOfFile should reserve and commit pages at the same time (SEC_COMMIT) or simply reserve pages (SEC_RESERVE).
Mapping the file makes the entire mapped virtual address range unavailable to other allocations in the process. After a page from the reserved range is committed, it cannot be freed or decommitted by calling VirtualFree. Reserved and committed pages are released when the view is unmapped and the file mapping object is closed.
For details, see the UnmapViewOfFile and CloseHandle functions.created, the caller can specify whether MapViewOfFile should reserve and commit pages at the same time (SEC_COMMIT) or simply reserve pages (SEC_RESERVE).


сам текст в файле
Кликните здесь для просмотра всего текста
When a file mapping object that is backed by the paging file is created, the caller can specify whether MapViewOfFile should reserve and commit pages at the same time (SEC_COMMIT) or simply reserve pages (SEC_RESERVE).
Mapping the file makes the entire mapped virtual address range unavailable to other allocations in the process. After a page from the reserved range is committed, it cannot be freed or decommitted by calling VirtualFree. Reserved and committed pages are released when the view is unmapped and the file mapping object is closed.
For details, see the UnmapViewOfFile and CloseHandle functions.


Может быть очистка должна быть какая та?
1
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
17.08.2013, 12:25
Цитата Сообщение от vodilawofer Посмотреть сообщение
файл маппируется не правильно.
вот что находиться в pvFileSrc
А как ты проверяешь что там находится?
0
29 / 27 / 1
Регистрация: 27.09.2012
Сообщений: 123
17.08.2013, 16:28  [ТС]
Если файл 2 гб. и нам надо поменять 1 и послед строку. то как быть? Куда запоминать строки которые находятся между ними?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
17.08.2013, 16:35
Цитата Сообщение от vodilawofer Посмотреть сообщение
Куда запоминать строки которые находятся между ними?
Выдели под них память: char *buffer = new char [size]; в чем проблема?
0
29 / 27 / 1
Регистрация: 27.09.2012
Сообщений: 123
17.08.2013, 16:39  [ТС]
Цитата Сообщение от castaway Посмотреть сообщение
Выдели под них память: char *buffer = new char [size]; в чем проблема?
Проблема еще в том что считать размер он будет очень долго.
например у меня size считается вот так:
C++
1
2
3
4
5
while(firstStr != secondStr)
    {
        firstStr++;
        i++;
    }
т.е. подаются два указателя first и second и посимвольно считаются. больше 1.5 гига ему предстоит пробежать.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
17.08.2013, 16:49
Считать он будет долго потому что размер файла велик. От этого никуда не денешься. Я бы на твоем месте сейчас не думал о скорости.
0
29 / 27 / 1
Регистрация: 27.09.2012
Сообщений: 123
17.08.2013, 16:54  [ТС]
вы сказали что строка это обязательно \n. но для текст редактора это не так. ведь строка может не заканчиваться \n.
В текст редакторе это уже считается абзац. Как все таки лучше определять строки по \n или фикс размеру?

Добавлено через 1 минуту
Цитата Сообщение от castaway Посмотреть сообщение
Считать он будет долго потому что размер файла велик. От этого никуда не денешься. Я бы на твоем месте сейчас не думал о скорости.
300 меговый файл от начало до конца бежал долго, а тут 1-2.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
17.08.2013, 17:00
Цитата Сообщение от vodilawofer Посмотреть сообщение
вы сказали что строка это обязательно \n. но для текст редактора это не так. ведь строка может не заканчиваться \n.
В последней строке может не быть '\n', но тем не менее она будет строкой, во всех других случаях строки заканчиваются символом '\n'.

Цитата Сообщение от vodilawofer Посмотреть сообщение
В текст редакторе это уже считается абзац.
В текстовом редакторе символ '\n' считается символом перевода строки.

Цитата Сообщение от vodilawofer Посмотреть сообщение
300 меговый файл от начало до конца бежал долго, а тут 1-2.
Если знаешь способы которые работают быстрее - скажи мне. Я таких не знаю.
0
29 / 27 / 1
Регистрация: 27.09.2012
Сообщений: 123
17.08.2013, 17:06  [ТС]
Как определить конец выделенной памяти у pvFileSrc?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
17.08.2013, 17:10
Цитата Сообщение от vodilawofer Посмотреть сообщение
Как определить конец выделенной памяти у pvFileSrc?
char *p_end = pvFileSrc + fileSize;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.08.2013, 17:10

Ошибка: символ новой строки в потоке
После того как указываю 1 пункт (к-ство квартир),то мне выбивает сразу 2 и 3,а не поочередно,подскажите где я ошибся? #include...

Отбрасывает ли std::cin символ новой строки?
Здравствуйте. Есть следующий код (это задача из книги Праты): #include <iostream> const unsigned short strsize = 100; struct sBop ...

Как убрать символ новой строки, применяя перегруженный оператор <<?
Друзья! Ну то есть формируются строки хитрым способом (не вручную, лучше не углубляться в это) Потом получаю вектор этих строк. Надо...

Будет ли добавлен символ новой строки при ошибочном вводе?
После того, как пользователь введет число и нажмеn enter в поток будет передан символ новой строки '\n'. Будет ли добавлен символ новой...

Ввести символьную строку. Распечатать каждый символ массива с новой строки
Ввести символьную строку. Распечатать каждый символ массива с новой строки.


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

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

Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru