Глава 2
///////////
1-й вариант
Эта программа считывает построчно из файла в новый файл, но
еще делает следующее:
1. Убирает все строки от начала файла и до первой встречи лексемы "<h2>".
Назовем это Чердак.
2. Убирает все строки от первой встречи лексемы "<center>" до конца файла.
Назовем это Подвал.
//Работа с файлами и строками
//
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
int main( int argc,char* argv[]) {
string str = "<h2>"; // лексема для поиска
string str1 = "<center>"; // лексема для поиска
string tmp;
string s1;
//------------------
//введем два флага
bool f_01 = false;
bool f_02 = false;
//---------------------------------------
char fileTo[100] ="fileTo.txt";
char fileFrom[100] ="fileFrom1.txt";
ifstream from1("fileFrom.txt");//открываем файл для считывания
if(!from1) {
cout<<"Vhodnoi fail ne naiden:" ;
return (1);
}
ofstream to2("fileTo.txt", ios::trunc);// стираем все, что было в файле
to2.close();
ofstream to1("fileTo.txt", ios::app);//открываем файл для записи
if(!to1) {
cout<<"Vyhodnoi fail ne otkryt:" ;
return (1);
}
//-----------------------------------------
//главный цикл
while (!from1.eof()) {
getline(from1,tmp,'\n');//считываем построчно в строку tmp
int n = 0;
//-----------------------------------------------------------
// Уберем чердак
while(1 != tmp.empty() && f_01==false ) {//если строка не пуста
s1 = tmp;
n = tmp.find(str); // найдем позицию вхождения
// если лексемы в строке нет, то
// выйдем из цикла, чтобы прочесть следующую строку
if(n==-1) {
break;
}
// если лексема есть
if(n>0) {
s1.erase(0, n ); //левее n все отсекаем
tmp = s1;
f_01 = true;
}
}//end while
if(f_01==false) continue;
//-----------------------------------------------------------
// Уберем подвал
while(1 != tmp.empty() && f_02==false) {//если строка не пуста
s1 = tmp;
n = tmp.find(str1); // найдем позицию вхождения
// если лексемы в строке нет
if(n==-1) {
to1<< tmp << endl;
break;
}
// если лексема есть
if(n>0) {
s1.erase(n, tmp.length() ); //правее n все отсекаем
to1<< s1 << endl; // копируем строку до лексемы
f_02 = true;
}
}//end while
} //end while главный цикл
to1.close();
from1.close();
return 0;
}
Назад |
Начало урока |
Вверх |
Вперед
Содержание