obeeey Temat założony przez niniejszego użytkownika |
Jak wczytać daną część pliku .html do struktury? » 2018-12-11 17:42:44 Cześć, staram się wczytać plik .html i rozdzielić jego treść na kilka innych plików, ale póki co nie wiem jak poprawnie zapisać to, by program wczytywał tekst od danego znaku, np. od pojawienia się <body> we wczytywanym tekście do </body> i zapisał to co jest pomiędzy tymi znacznikami w strukturze. Tyle wymyśliłam: #include <iostream> #include <fstream> using namespace std;
const int row_length = 100;
struct html_struct { string head; string body; string p; string table; string ul; };
html_struct records[ row_length ];
int main() { ifstream file( "file.html" ); string line; while( getline( file, line ) ) { if( line == "<head>" ) do { } while( !( line == "</head>" ) ); } file.close(); return 0; }
Nie wiem jak poprawnie to co jest powyżej zapisać, wiem, że jest to ogólnie zły zapis, ale tylko tyle wymyśliłam. Czy ktoś byłby w stanie mi pomóc? |
|
pekfos |
» 2018-12-11 17:47:35 Ma to działać dla dowolnego pliku HTML? Jeśli tak, nie możesz założyć, że tag HTML znajduje się w osobnej linii, bez białych znaków na początku i końcu, i że jest w minimalnej postaci, bez żadnych atrybutów. |
|
obeeey Temat założony przez niniejszego użytkownika |
» 2018-12-11 17:54:44 Dla ograniczonego pliku html, który może się składać tylko z sekcji head i body + 3 znaczniki: <p>, <table> i <ul>, które nie zawierają się w sobie a występują osobno, tzn. nie może być <p><table> coś </p></table> a tylko samo <p> treść </p>. |
|
pekfos |
» 2018-12-11 18:02:19 A jak z podziałem na linie? Może być <p>abc</p>
czy musi być <p> abc </p> |
|
obeeey Temat założony przez niniejszego użytkownika |
» 2018-12-11 18:04:24 Nie ma to znaczenia wg polecenia, przynajmniej nic nie jest o tym wspomniane. Tak jak wyjdzie łatwiej |
|
pekfos |
» 2018-12-11 18:09:07 "Nic nie jest wspomniane" znaczy "nie można przyjąć takiego założenia". Ale jak chcesz najłatwiej, to możesz założyć że w każdej linii występuje tylko i wyłącznie tekst, lub tag HTML, nigdy jedno i drugie. Wtedy wystarczy tak: while( getline( file, line ) ) { if( line == "<head>" ) while( getline( file, line ) && line != "</head>" ) ;
|
|
obeeey Temat założony przez niniejszego użytkownika |
» 2018-12-11 18:14:44 Dziękuję, to przyjmę raczej tę najłatwiejszą opcję. A w jaki sposób mogę całą treść między <head> a </head> przypisać do konkretnej struktury? Mam na myśli coś takiego, ale znów nie wiem jak to składniowo ma poprawnie wyglądać: for( int i = 0; i < row_length; i++ ) { file >> records[ i ].head; }
|
|
pekfos |
» 2018-12-11 18:26:36 Co to za treść? |
|
« 1 » 2 |