Дан файл с английским текстом и датами. Нужно из одного файла в другой перенести предложения содержащие даты типа dd.mm.yyyy

Проблема заключается в том как переходить на другие строки(1 строка = 1 предложение) и как записать эти строки в другой файл. Заранее благодарю. Пытался сделать через использование "алфавита" из чисел, но я немного не понимаю как происходит поиск этих самых предложений. Использование кода из похожих задач, но на одну строку и и без использования файлов ни к чему хорошему не привели. Да и вообще не до конца понимаю как пользоваться строками. Даже на самом деле не уверен правильно ли работает функция. Код ничего не выводит и я честно говоря не понимаю правильно ли я вообще хоть что-то сделал.

 using namespace std;
    
    string date(string strdate, string number) {
        string sdate = "";
        for (int i = 0; i < 10; ++i) {
            for (int j = 0; j < 10; ++j) {
                if ((strdate[i] == number[j]) || (strdate[i] == '.')) {
                    sdate += strdate[i];
                }
                else {
                    break;
                }
            }
        }
        return sdate;
    }
    
    int main() {
        setlocale(LC_ALL, "RUS");
        string x;
        ifstream in("C\\Users\\kapto\\input.txt");
        ofstream out("C\\Users\\kapto\\buffer.txt");
        string str, sdate;
        string razdel = "!?,.:;- "; 
        string number = "1234567890";
        string::size_type pos = 0, k;
        k = str.find_first_of(razdel); 
        while (in.eof()) { 
            getline(cin, str);
            if (pos = str.find_first_of(number)) {
                string strdate = str.substr(pos, 10);
                sdate = date(strdate, number);
                if (sdate == "") {
                    str.erase();
                }
            }
        }
        system("pause");
        return 0;
    }
 

Ответы (1 шт):

Автор решения: Павел Ериков

И снова здравствуйте)

Вот пример кода с комментариями:

ifstream input("D:\\input.txt", ios::in);
//Буффер для предложения
char buffer[256];
buffer[0] = '\0';
//После того, как дошли до новой строчки в переменной size будет хранится размер предложения.
int size = 0;
char t;
while (!input.eof()) {
    size = 0;
    //Считываем по одному символу 
    while (input.read((char*)&t, sizeof(char))) {
        //Если считанный символ перевод на новую строку, то обрезаем конец у предложения
        if (t == '\n') {
            buffer[size] = '\0';
            //Тут можете вызывать функции проверки на дату.
            //Я знаю она у вас есть)
            //Если дата в предложении найдена то просто записываете в новый файл
            //Как это делать я думаю вы уже умеете
            break;
        }
        buffer[size] = t;
        ++size;
    }
    if (input.eof() && size > 0) buffer[size] = '\0';
    cout << buffer << endl;
}
→ Ссылка