Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++ käyttäjän määrittämän nettisivun avaaminen konsolista

Rox [02.06.2013 01:49:26]

#

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.

Metabolix [02.06.2013 13:59:46]

#

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());

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta