Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

c++ default parameters

None
3 antwoorden
  • 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
  • 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.
  • 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

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.