Ga naar inhoud

c++ default parameters


anoniem

Aanbevolen berichten

Hallo, Kben nu tijdje bezig met een programma. Het lukt alleen niet. Ik moet default parameters gebruiken. [code:1:80ccd9202d]#include <iostream> #include <string> using namespace std; void OntleedUrl (string url, ??){ string::size_type a(url.find("://")); string::size_type b(url.substr(a+3).find("/")); string::size_type c(url.find_last_of("/")); cout<<"Protocol:" <<url.substr(0, a) <<endl; cout<<"Machine:" <<url.substr(a+3, b) <<endl; cout<<"Directory:" <<url.substr(a+3+b+1, c-(a+3)-(b+1)) <<endl; cout<<"File:" <<url.substr(c+1) <<endl; } int main() { string url("http://bd.thrijswijk.nl/sopx2/pract/opd1c.cpp"); cout<<"test 1:"<<endl; string OntleedUrl(url); cout<<"test 2:"<<endl; OntleedUrl(url, "file"); cout<<"test 3:"<<endl; OntleedUrl(url, "directory"); cout<<"test 4:"<<endl; OntleedUrl(url, "machine"); cout<<"test 5:"<<endl; OntleedUrl(url, "protocol"); cin.get(); return 0; }[/code:1:80ccd9202d] de output moet zijn: test 1: protocol: http machine: bd.thrijswijk.nl directory: sopx2/pract file: opdr1c.cpp test 2: file: opdr1c.cpp test 3: directory: sopx2/pract test 4: machine: bd.thrijswijk.nl test 5: protocol: http Misschien kan iemand me uitleggen hoe ik default parameters kan gebruiken in dit voorbeeld? MVG
Link naar reactie
In je functie declaratie (ontbreekt nog in je programma) kun je default parameter-waarden aangeven. Dat doe je zo: [code:1:c310ef67c0]int test(int p = 5);[/code:1:c310ef67c0] Bij de definitie (implementatie) van de functie kun je geen default parameter geven: [code:1:c310ef67c0]int test(int p) { return p; }[/code:1:c310ef67c0] Wanneer je nu test() aanroept zal parameter p automatisch de waarde 5 krijgen. Uiteraard kun je ook gewoon test(6) uitvoeren.
Link naar reactie
Nu heb ik een prog. dat aan de voorwaarden voldoet. [code:1:020d2ae44f] #include <iostream> #include <string> using namespace std; int OntleedUrl (string url, string d = "nix") { if (d == "file"){ string::size_type c(url.find_last_of("/")); cout<<"File:" <<url.substr(c+1) <<endl; } else if (d == "directory"){ string::size_type a(url.find("://")); string::size_type b(url.substr(a+3).find("/")); string::size_type c(url.find_last_of("/")); cout<<"Directory:" <<url.substr(a+3+b+1, c-(a+3)-(b+1)) <<endl; } else if (d == "machine"){ string::size_type a(url.find("://")); string::size_type b(url.substr(a+3).find("/")); cout<<"Machine:" <<url.substr(a+3, b) <<endl; } else if (d == "protocol"){ string::size_type a(url.find("://")); cout<<"Protocol:" <<url.substr(0, a) <<endl; } else{ string::size_type a(url.find("://")); string::size_type b(url.substr(a+3).find("/")); string::size_type c(url.find_last_of("/")); if (a!=string::npos){ cout<<"Protocol:" <<url.substr(0, a) <<endl; cout<<"Machine:" <<url.substr(a+3, b) <<endl; cout<<"Directory:" <<url.substr(a+3+b+1, c-(a+3)-(b+1)) <<endl; cout<<"File:" <<url.substr(c+1) <<endl; } } } int main() { string tURL("http://bd.thrijswijk.nl/sopx2/pract/opd1c.cpp"); cout<<"test 1:"<<endl; OntleedUrl(tURL); cout<<"test 2:"<<endl; OntleedUrl(tURL, "file"); cout<<"test 3:"<<endl; OntleedUrl(tURL, "directory"); cout<<"test 4:"<<endl; OntleedUrl(tURL, "machine"); cout<<"test 5:"<<endl; OntleedUrl(tURL, "protocol"); cin.get(); return 0; } [/code:1:020d2ae44f] Is dit de goede manier om het te laten werken, of is dit heel erg dubbelop en gebruik ik de default parameter verkeerd? MVG
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...