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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 5.00
vodilawofer
29 / 27 / 2
Регистрация: 27.09.2012
Сообщений: 123
#1

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

16.08.2013, 18:16. Просмотров 3284. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.08.2013, 18:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Символ новой строки (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
16.08.2013, 22:28 #46
Цитата Сообщение от vodilawofer Посмотреть сообщение
изза разности длин строк нужно будет двигать часть, которая находиться между ними, в ту или иную сторону.
Это очевидно, об этом давно было сказано:
Цитата Сообщение от castaway Посмотреть сообщение
Я тут подумал и сделал вывод:
Самая главная проблема в том, что если строки разных размеров то придется читать данные от начала первой строки до конца второй. Выделять то что находится между строками, сохранять это, менять строки местами, записывать первую строку, потом записывать то что находилось между ними, потом вторую. Размер данных при этом не меняется.
Здесь очень поможет MapViewOfFile, по-другому через MapViewOfFile только извращения.
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.08.2013, 22:37 #47

Не по теме:

Цитата Сообщение от vodilawofer Посмотреть сообщение
там было написано что я экспериментировал, сам до того как создать тему.
Непонятно только: зачем о своих экспериментах писать под цитатой с моим кодом...



Добавлено через 3 минуты
Цитата Сообщение от castaway Посмотреть сообщение
Выделять то что находится между строками, сохранять это, менять строки местами, записывать первую строку, потом записывать то что находилось между ними, потом вторую.
Если нужно будет поменять первую и последнюю строки? И где это всё должно происходить? Файл 2 ГБ?
0
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
16.08.2013, 22:39 #48
alsav22, честно говоря, не понял вопроса.
0
vodilawofer
29 / 27 / 2
Регистрация: 27.09.2012
Сообщений: 123
16.08.2013, 22:41  [ТС] #49
Цитата Сообщение от alsav22 Посмотреть сообщение

Не по теме:


Непонятно только: зачем о своих экспериментах писать под цитатой с моим кодом...



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

Если нужно будет поменять первую и последнюю строки? И где это всё должно происходить? Файл 2 ГБ?

Не по теме:

Извиняюсь.


в файле, примерно 2 гб. строки выбираются рандомно.
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.08.2013, 22:41 #50
Это всё описываются операции с файлом или с памятью?
0
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
16.08.2013, 22:42 #51
Цитата Сообщение от alsav22 Посмотреть сообщение
Если нужно будет поменять первую и последнюю строки? И где это всё должно происходить? Файл 2 ГБ?
Осознал вопрос. Нет, память понадобится только для тех данных, которые мы прочитаем, и в последствии будем записывать.
0
vodilawofer
29 / 27 / 2
Регистрация: 27.09.2012
Сообщений: 123
16.08.2013, 22:43  [ТС] #52
память
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.08.2013, 22:45 #53
Если с файлом, и нужно поменять первую и последнюю строку, то файл прийдётся переписать два раза. У меня вариант: одно быстрое чтение (читаются только две строки, в остальное время просто двигается курсор) и одна запись файла.

Добавлено через 1 минуту
Цитата Сообщение от vodilawofer Посмотреть сообщение
память
И где столько возьмёте? castaway, вы что-то мне насчёт вектора говорили?
0
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
16.08.2013, 22:45 #54
alsav22, мы же остановились на MapViewOfFile ! ТС это устраивает.
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.08.2013, 22:46 #55
Цитата Сообщение от castaway Посмотреть сообщение
Нет, память понадобится только для тех данных, которые мы прочитаем, и в последствии будем записывать.
То есть? Поконкретнее можно?
0
vodilawofer
29 / 27 / 2
Регистрация: 27.09.2012
Сообщений: 123
16.08.2013, 22:47  [ТС] #56
Главное чтобы быстро операции происходили.
0
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
16.08.2013, 22:47 #57
Цитата Сообщение от alsav22 Посмотреть сообщение
castaway, вы что-то мне насчёт вектора говорили?
Да, я говорил вам на счет вектора в 27-м посте ( Символ новой строки )
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.08.2013, 22:48 #58
Цитата Сообщение от castaway Посмотреть сообщение
ТС это устраивает.
Устроит или нет будет видно, когда сделает (если сделает). Пока это только благие намерения. Я не настаиваю на своём варианте, но мне кажется, что по ресурсам это менее затратно.
0
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
16.08.2013, 22:49 #59
Цитата Сообщение от alsav22 Посмотреть сообщение
То есть? Поконкретнее можно?
Повторюсь еще раз. MapViewOfFile ТС устраивает. Или вы о чем?
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.08.2013, 22:52 #60
Цитата Сообщение от castaway Посмотреть сообщение
Да, я говорил вам на счет вектора в 27-м посте
Вопрос в количестве памяти, что не хватит, чтобы с таким файлом в памяти работать. Я правильно понял, насчёт вектора?

Добавлено через 1 минуту
Цитата Сообщение от castaway Посмотреть сообщение
Или вы о чем?
Я о том, какое количество данных вы предполагаете в память писать? Сколько?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2013, 22:52
Привет! Вот еще темы с ответами:

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

Функция getline считывает несколько строк из файла, игнорируя символ новой строки - C++
Всем доброго дня! В С++ я новичок, сам себе придумываю задачки, просто для тренировки. Столкнулся с непонятным для меня поведением...

Вывести строки, в которых символ «*» встречается не менее 2 раз и заменить символ «*» на символ «_» - C++
День добрый. Имеется условие лабы. Написать программу, в которой с клавиатуры вводится до 10 символьных строк. Вывести строки, в...

Каждый символ строки заменить на следующий за ним, а последний символ строки заменяеть первым - C++
я написал код но не могу разобраться. вот дано : ---------------------------------------------------------- В текстовом файле fin.txt...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.08.2013, 22:52
Ответ Создать тему
Опции темы

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