Дан файл с английским текстом и датами. Нужно из одного файла в другой перенести предложения содержащие даты типа 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;
}