Haker123 Temat założony przez niniejszego użytkownika |
[C++] Szukanie stringa w pliku binarnym » 2014-07-19 23:50:30 Witam. Chce zrobic kod ktory bedzie wyszukiwal odpowiedniego stringa w pliku binarnym. Znalazlem cos takiego : #include <iostream> #include <fstream> #include <string>
using namespace std;
int main( int argc, char * argv[] ) { std::ifstream ifs( argv[ 1 ], ios::binary ); std::string str(( std::istreambuf_iterator < char >( ifs ) ), std::istreambuf_iterator < char >() ); size_t pos = str.find( argv[ 2 ] ); if( pos != string::npos ) cout << "string found at position: " << int( pos ) << endl; else cout << "could not find string" << endl; return 0; }
Ale im wiecej czytam o "std::istreambuf_iterator<char>(ifs)" tym mniej rozumiem do czego to sluzy. Czytalem ze mozna kozystac rowniez z "istream_iterator" czym one sie roznia i ktore jest lepsze? Bede wdzieczny jesli ktos moglby mi to wyjasnic , albo podac jakas strone gdzie bedzie jasno napisane co i jak. PS. Czy na stronie nie dziala wyszukiwanie?? Nawet jak wpisuje C++ albo ALLEGRO to nic mi nie wyskakuje. |
|
Moorfox |
» 2014-07-20 00:01:10 Uzyj lepiej funkcji C #include <cstdio> #include <string>
using namespace std;
int main( int argc, char ** argv ) { if( argc != 3 ) return 1; FILE * f; char str[ 50 ]; f = fopen( argv[ 1 ], "rb+" ); do { fscanf( f, "%s", str ); } while( strcmp( argv[ 2 ], str ) ); printf( "%s", str ); fclose( f ); return 0; }
Odrazu adnotacja do pekfosa - nie kompilowalem nie wiem czy dziala pisalem kod na szybko wiec jakosc nie zachwyca zabezpieczen tez nie ma np. gdyby nie bylo stringa w pliku, moglbym zrobic !feof(f) ale mi sie juz nie chce. Czepiaj sie znowu wisi mi to od teraz. |
|
Mateus. |
» 2014-07-20 09:48:48 @haker123 wyszukiwanie na stronie nie działa gdy masz wyłączone pliki cookie. Jeśli tak jak ja nie chcesz ich akceptować to zrób wyjątek w opcjach internetowych dla tej strony. |
|
Gabes |
» 2014-07-20 10:22:35 Jeśli potrzebujesz do Allegro5 to możemy korzystać z ALLEGRO_FILE #include <allegro5/allegro.h> #include <allegro5/allegro_font.h> int main() { al_init(); al_init_font_addon(); al_install_keyboard(); al_install_mouse(); ALLEGRO_KEYBOARD_STATE klawiatura; ALLEGRO_DISPLAY * okno = al_create_display( 600, 400 ); ALLEGRO_FONT * font8 = al_create_builtin_font(); int liniaY = 10; ALLEGRO_USTR * tekst; al_clear_to_color( al_map_rgb( 255, 255, 255 ) ); ALLEGRO_FILE * plik = al_fopen( "€uroGęś.cpp", "r" ); while( !al_key_down( & klawiatura, ALLEGRO_KEY_ESCAPE ) ) { al_get_keyboard_state( & klawiatura ); tekst = al_fget_ustr( plik ); al_ustr_rtrim_ws( tekst ); al_draw_ustr( font8, al_map_rgb( 0, 0, 0 ), 0, liniaY, 0, tekst ); if( al_ustr_append_chr( tekst, ' ' ) ) liniaY += 8 + 4; al_flip_display(); } al_fclose( plik ); al_destroy_display( okno ); return 0; } http://www.dropbox.com/s/eml2m45tzhbi3hq/A5.zip?dl=1 |
|
Monika90 |
» 2014-07-20 11:02:01 skoro już wszyscy wrzucają tu jakiś kod, to ja też wrzucę #include <boost/interprocess/file_mapping.hpp> #include <boost/interprocess/mapped_region.hpp> #include <string> #include <algorithm> #include <iostream> namespace bi = boost::interprocess;
int main() { bi::file_mapping file( "a.out", bi::read_only ); bi::mapped_region region( file, bi::read_only ); auto beg = static_cast < const char *>( region.get_address() ); auto end = beg + region.get_size(); std::string phrase = "zugzwang"; auto i = std::search( beg, end, phrase.begin(), phrase.end() ); if( i != end ) std::cout << phrase << " found at offset " << i - beg << '\n'; }
nawet działa: http://coliru.stacked-crooked.com/a/e3f565b0494bb05c |
|
Haker123 Temat założony przez niniejszego użytkownika |
» 2014-07-20 14:20:46 Przyznam sie bez bicia ze aktualnie potrzebuje tego kodu do pliku z mapa dla gry napisanej w ALLEGRO , ale chce napisac uniwersalny kod do kazdego programu ;]
Najbardziej czytelny jest dla mnie kod napisany w BOOST i mam pytanie gdzie moge znalesc jakis dobry tutorial do tej biblioteki??
Wlasnie przejrzalem dokumentacje ale jest ona wielka i jak narazie zabardzo pokrecona dla mnie , przydal by mi sie jakis wstep do biblioteki.
PS. Mateus dzieki za informacje ;] |
|
pekfos |
» 2014-07-20 14:30:13 mam pytanie gdzie moge znalesc jakis dobry tutorial do tej biblioteki?? |
Najprawdopodobniej taki nie istnieje. |
|
Haker123 Temat założony przez niniejszego użytkownika |
» 2014-07-20 16:55:03 Czyli jedynym sposobem na nauczenie sie tej biblioteki to dokumentacja na stronie http://www.boost.org/ ?? |
|
« 1 » 2 |