Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/32: Рейтинг темы: голосов - 32, средняя оценка - 4.56
29 / 27 / 1
Регистрация: 27.09.2012
Сообщений: 123

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

16.08.2013, 18:16. Показов 8688. Ответов 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
Ответ Создать тему
Новые блоги и статьи
BitTorrent (версия 4.3.9) и Меню Настройки
russiannick 15.11.2026
В меню Настройки можно отключить автоматическое обновление программы. Карта этого меню приложена ниже. Нужный пункт выделен красным. Сервис Настройки Поведение
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки. Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён". Изменено отображение буквы Й. Добавлена. . .
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru