anoniem Geplaatst: 12 september 2007 Delen Geplaatst: 12 september 2007 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 Quote Link naar reactie
anoniem Geplaatst: 14 september 2007 Auteur Delen Geplaatst: 14 september 2007 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. Quote Link naar reactie
anoniem Geplaatst: 14 september 2007 Auteur Delen Geplaatst: 14 september 2007 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 Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen