Мой вопрос касается задания, над которым я работаю. Кажется, что есть несколько способов приблизиться к заданию.
Программа, которую я пишу, будет фильтром для текстовых файлов. Цель задания - получить опыт работы с fstream и getline.
Требования:
- Прочитать один текстовый файл (любым способом, не обязательно все сразу)
- Запись в отдельный текстовый файл (любым возможным способом, можно добавлять или записывать символ за символом)
- Предполагается, что каждое предложение заканчивается точкой.
- Первая буква каждого предложения должна быть заглавной.
- Все, кроме первой буквы каждого предложения, должны быть строчными. (имена собственные тоже - это тривиальный пример)
У меня есть рабочий черновик программы, которую я написал, но getline несовместима с тем, как он читает мой текстовый файл. По сути, он будет читать одну строку в виде строки, что я и хочу. Как это читается во второй строке; однако программа выдает ошибку времени выполнения на полпути через строку, и Windows закрывает ее.
Есть ли в getline буфер, который заполняется и должен очищаться после каждого чтения строки?
Мой псевдокод для программы:
- Используйте getline для чтения строки из строки x с остановкой на период (.).
- Перебирайте строковые символы, в верхнем регистре первую букву, а затем в нижнем регистре остальные.
- Чтение в другой строке, продолжающейся после последнего периода (.) В текстовом файле.
- Повторяйте, пока текстовый файл не будет прочитан.
- Запись во второй текстовый файл.
Я реализую getline следующим образом:
getline(fileIN, str1, '.')
str1 - строка, которая читается из каждой строки.
Правильно ли я использую getline? Я продумываю эту проблему правильно и эффективно?
* Когда я заканчивал этот расширенный вопрос / раздел, я понял, что getline может использовать больше памяти для символов '\ r' или '\ n' на концах строк или по причинам, не связанным с память, getline неправильно обрабатывает (в соответствии с моими целями) предложения, которые переносятся на новые строки. Разве getline не справляется с переносом предложений / слов?
Кроме того, есть ли способ динамически указывать getline для чтения первой строки до точки (.) Или новой строки ('\ n'), которая когда-либо появляется ПЕРВЫЙ?
Спасибо за ваше время и внимание.