Problem z system(), int, string

Problem z system(), int, string

Wątek przeniesiony 2017-09-08 10:08 z C/C++ przez kq.

MM
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 7 lat
  • Postów:11
0

Chciałem zrobić program tak by wchodził na stronę(to google.pl podałem tylko dla przykładu) z dowolnie podanym ID
np. http://google.pl/id/1234/download
Ale coś program nie chce działać i wyskakuje poniższy błąd. Szukałem w internecie informacji na ten temat, ale niestety nic nie znalazłem.
Ale domyślam się, że błąd jest związany z "system(adresik);". Prosiłbym o pomoc i wyjaśnienie co zrobiłem nie tak.

Kopiuj
C:\C++\test\main.cpp|22|error: cannot convert 'std::string {aka std::basic_string<char>}' to 'const char*' for argument '1' to 'int system(const char*)'|
Kopiuj
#include <iostream>
#include <cstdlib>
#include <sstream>
using namespace std;
int x;
string poczatek, xdd, koncowka, calosc, adresik;

int main()
{
    cin>>x;     //wpisywanie id

    ostringstream ss;       //przemiana int na string
    ss << x;
    string str = ss.str();
    xdd=str;
    poczatek="http://google.pl/id/";

    koncowka="/download";

    calosc=poczatek+xdd+koncowka; // cały adres
    adresik="start "+calosc;
    system(adresik);



    return 0;
}
edytowany 1x, ostatnio: MaMiX
kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Szczecin
1

system oczekuje char const*, a ty podajesz std::string. Kompilator mówi dokładnie to. Użyj metody c_str().

Kopiuj
    system(adresik.c_str());

Ale całość możesz uprościć:

Kopiuj
    int id;
    cin >> id;

    string adres;
    stringstream ss{"start http://google.pl/id/"};
    ss << id << "/download";

    string adres = ss.str();
 
    system(adres.c_str());

Swoją drogą: w jakim celu używasz zmiennych globalnych? To bardzo zły nawyk.


edytowany 3x, ostatnio: kq
vpiotr
zabrakło chyba "start"
kq
Fakt, dzięki!
MM
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 7 lat
  • Postów:11
0
kq napisał(a):

system oczekuje char const*, a ty podajesz std::string. Kompilator mówi dokładnie to. Użyj metody c_str().

Kopiuj
    system(adresik.c_str());

Ale całość możesz uprościć:

Kopiuj
    int id;
    cin >> id;

    string adres;
    stringstream ss{"http://google.pl/id/"};
    ss << id << "/download";

    string adres = ss.str();
 
    system(adres.c_str());

Swoją drogą: w jakim celu używasz zmiennych globalnych? To bardzo zły nawyk.

Dzięki, heh akurat tego próbowałem tylko najwyraźniej jeden nawias gdzieś za dużo lub za mało :D
A co do zmiennych globalnych to takie przyzwyczajenie i kod pisany w miarę na szybko.
Jeszcze raz dziękuję za pomoc :D

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.