Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z kompilacją - curl_easy_unescape

Ostatnio zmodyfikowano 2013-07-26 20:52
Autor Wiadomość
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.

C/C++
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?
P-88868
Mrovqa
» 2013-07-26 19:52:19
C/C++
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().
P-88870
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:
C/C++
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
P-88873
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:
C/C++
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ąć ;)
P-88879
« 1 »
  Strona 1 z 1