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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 5.00
vodilawofer
29 / 27 / 2
Регистрация: 27.09.2012
Сообщений: 123
16.08.2013, 18:16     Символ новой строки #1
Всем привет) С маппировал текстовый файл в память.
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"), ничего не выходит((

Пожалуйста, подскажите как определить строку.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.08.2013, 18:16     Символ новой строки
Посмотрите здесь:

Символ новой строки в MFC C++
C++ функция getline считывает несколько строк из файла, игнорируя символ новой строки
C++ Ввести символьную строку. Распечатать каждый символ массива с новой строки
Найти символ первой строки, который первым не совпал с одним из символов второй строки. Вывести слово, в которое входит этот символ C++
C++ Как убрать символ новой строки, применяя перегруженный оператор <<?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
16.08.2013, 22:54     Символ новой строки #61
alsav22, это не может быть затратно. Честно говоря мне это делать лень, но ради вашего "большого спасиба" я готов. Если согласны тогда заключим пари

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

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

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

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

Не по теме:

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

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

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

Не по теме:

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

castaway
17.08.2013, 00:26
  #67

Не по теме:

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

alsav22
17.08.2013, 00:28
  #68

Не по теме:

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

vodilawofer
17.08.2013, 00:41  [ТС]
  #69

Не по теме:

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

castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
17.08.2013, 00:44     Символ новой строки #70
Цитата Сообщение от vodilawofer Посмотреть сообщение
напряжение "скакнуло", и код удалился
Неадекватность перескочила все возможные границы.. Какой удалился код ?
vodilawofer
29 / 27 / 2
Регистрация: 27.09.2012
Сообщений: 123
17.08.2013, 02:33  [ТС]     Символ новой строки #71
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.


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

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

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

Цитата Сообщение от vodilawofer Посмотреть сообщение
300 меговый файл от начало до конца бежал долго, а тут 1-2.
Если знаешь способы которые работают быстрее - скажи мне. Я таких не знаю.
vodilawofer
29 / 27 / 2
Регистрация: 27.09.2012
Сообщений: 123
17.08.2013, 17:06  [ТС]     Символ новой строки #79
Как определить конец выделенной памяти у pvFileSrc?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2013, 17:10     Символ новой строки
Еще ссылки по теме:

Вывести строки, в которых символ «*» встречается не менее 2 раз и заменить символ «*» на символ «_» C++
Std::cin, символ новой строки C++
C++ Будет ли добавлен символ новой строки при ошибочном вводе?

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

Или воспользуйтесь поиском по форуму:
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
17.08.2013, 17:10     Символ новой строки #80
Цитата Сообщение от vodilawofer Посмотреть сообщение
Как определить конец выделенной памяти у pvFileSrc?
char *p_end = pvFileSrc + fileSize;
Yandex
Объявления
17.08.2013, 17:10     Символ новой строки
Ответ Создать тему
Опции темы

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