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 |