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

Problem z system(), int, string

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.

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*)'|
#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;
}
1

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

    system(adresik.c_str());

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

    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.

0
kq napisał(a):

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

    system(adresik.c_str());

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

    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

1 użytkowników online, w tym zalogowanych: 0, gości: 1