Eli testailin tuossa sitä sun tätä, ja jäin jumiin tällaiseen kohtaan. Miten avaan käyttäjän määrittämän nettisivun oletus-selaimella? Seuraavanlaisesti saisin auki normaalisti mutta oon ihan hukassa miten avaan sen käyttäjän määrittämänä.
Eli googlen avaaminen oletus-selaimella:
system("start www.google.fi");
mutta miten saan sen auki käyttäjän kirjoittamana?
Koitin seuraavanlaista:
string WebPage; cout << "Write url here: "; cin >> WebPage;
ja tähän kohtaan jään jumiin.
Miten käytän tuota jo 'tallennettua' linkkiä sivun avaamiseen?
VB.NET:iin kun on tottunut koitin seuraavankaltaista mikä ei tietenkään ollut oikein:
string WebPage; cout << "Write url here: "; cin >> WebPage; system("start " & (WebPage)); //<---- miten?
Koitin googletella ties millä hakusanoilla mutta en sopivaa vastausta löytänyt.
Tähän on ihan varmasti joku todella helppo ratkaisu mutta mistään en sitä löytänyt.
system(("start " + WebPage).c_str());
Miten olisi taas oppaan lukeminen? Lisäksi voisit vähän järkeillä, miten saisit kysymyksistä yksinkertaisempia: nytkään ongelmasi ei liity mitenkään nettisivun avaamiseen tai konsoliin, vaan kysymys kuuluu, miten yhdistetään kaksi merkkijonoa ja miten tulos annetaan system-funktiolle. Neuvon nyt, miten ongelma ratkeaa.
Merkkijonojen yhdistäminen neuvotaan edellä mainitussa oppaassa. Ratkaisu löytyy myös netistä triviaaleilla hakusanoilla. Yhdistäminen tapahtuu +-merkillä, jos edes toinen osapuoli on std::string-tyyppinen.
std::string osoite; std::cin >> osoite; std::string komento = "start " + osoite; // Voit tarkistaa tuloksen omin silmin: std::cout << komento << std::endl;
Tätä muuttujaa ei voi kuitenkaan syöttää suoraan system-funktiolle. Jos kokeilet, saat jonkin tällaisen ilmoituksen:
GCC kirjoitti:
error: cannot convert 'std::string {aka std::basic_string<char>}' to 'const char*' for argument '1' to 'int system(const char*)'
GCC kirjoitti:
virhe: ei voi muuntaa tyypistä ”std::string {aka std::basic_string<char>}” tyyppiin ”const char*” ”int system(const char*)”:n argumentiksi ”1”
Clang kirjoitti:
error: no viable conversion from 'std::string' (aka 'basic_string<char>') to 'const char *'
Jos tässä vaiheessa pysähtyy vähän miettimään ja ehkä katsoo opasta uudestaan, saattaa huomata siellä maininnan metodista c_str. Voisikohan se auttaa? Lisäksi tällaisen virheilmoituksen perusteella pitäisi jo ymmärtää tehdä haku C++ convert string char *, jolla sama c_str löytyy heti.
std::system(komento.c_str());
Aihe on jo aika vanha, joten et voi enää vastata siihen.