Problem z kompilacją - curl_easy_unescape
Ostatnio zmodyfikowano 2013-07-26 20:52
Marek294 Temat założony przez niniejszego użytkownika |
Problem z kompilacją - curl_easy_unescape » 2013-07-26 19:38:31 Witam! Otóż od dłuższego czasu zmagam się z problemem, a mianowicie takim, że potrzebuje zdekodować ciąg znaków pobrany z kodu źródłowego. Znalazłem dokumentację dotyczącą funkcji curl_easy_unescape jednakże nie mam pojęcia jak ta funkcja sprawuje się w akcji i dlatego potrzebuję pomocy. fstream wczytaj, zapis; string pobrany; string zdekodowany; zapis.open( "zapis.txt", ios::out ); wczytaj.open( "player.txt", ios::in ); while( !wczytaj.eof() ) { getline( wczytaj, pobrany ); zdekodowany = curl_easy_unescape( NULL, pobrany, NULL, NULL ); zapis << zdekodowany; } wczytaj.close(); zapis.close();
Przy kompilacji występuje błąd: [Error] cannot convert 'std::string {aka std::basic_string<char>}' to 'char*' for argument '2' to 'char* curl_easy_unescape(CURL*, char*, int, int*)' Potraficie sprostować sytuację w kodzie i sprawić by wszystko działało? |
|
Mrovqa |
» 2013-07-26 19:52:19 zdekodowany = curl_easy_unescape( NULL, pobrany.c_str(), NULL, NULL );
Umiejętność czytania errorów ze zrozumieniem. std::string to nie char* - musisz go 'przekonwertować' metodą c_str(). |
|
Marek294 Temat założony przez niniejszego użytkownika |
» 2013-07-26 20:16:27 [Error] invalid conversion from 'const char*' to 'char*' [-fpermissive] //EDIT Pokombinowałem: fstream wczytaj, zapis; string pobrany; const char * cpobrany = pobrany.c_str(); string zdekodowany; zapis.open( "zapis.txt", ios::out ); wczytaj.open( "player.txt", ios::in ); while( !wczytaj.eof() ) { getline( wczytaj, pobrany ); zdekodowany = curl_easy_unescape( NULL,( char * ) cpobrany, 0, 0 ); } wczytaj.close(); zapis.close();
Teraz otrzymuje błędy: main.cpp:(.text+0x55a): undefined reference to `curl_easy_unescape(void*, char*, int, int*)' [Error] ld returned 1 exit status |
|
Marek294 Temat założony przez niniejszego użytkownika |
» 2013-07-26 20:52:38 Dobra problem z głowy. Okazało się, że biblioteka "curl.h" nie posiada funkcji "curl_easy_unescape". Jednakże posiada funkcję "curl_unescape". Więc ostateczny (działający) wynik to: fstream wczytaj, zapis; string pobrany; const char * cpobrany; string zdekodowany; zapis.open( "zapis.txt", ios::out ); wczytaj.open( "player.txt", ios::in ); while( !wczytaj.eof() ) { getline( wczytaj, pobrany ); cpobrany = pobrany.c_str(); zapis << curl_unescape( cpobrany, 0 ) << endl;; } wczytaj.close(); zapis.close(); return 0;
Dzięki za naprowadzenie na odpowiedni kierunek. Temat można zamknąć ;) |
|
« 1 » |