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

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

16.08.2013, 18:16. Показов 7758. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru