Wie greife ich auf ein bestimmtes Pointer-Index zu



  • Hi,

    undzwar möchte ich unten in der Schleife in pString1 nach pSuch suchen und es dann durchlaufen und da wo in pString1 pSuch vorkommt es mit pErsetz ersetzen. Nur wie mache ich das?

    Mein Code schaut aktuell so aus: https://pastebin.com/DfGExf2a

    P.S ich MUSS mit Pointern arbeiten, also nicht mit irgendwelchen anderen vorgefertigten Funktionen, die mir das und das ersetzen.

    Danke im Voraus 😃



  • Zeige den Code hier.



  • int main()
    {

    char such[100];
    char ersetz[100];
    char meinString[100];

    char* pSuch;
    char* pErsetz;
    char* pString1;

    cout << "String eingeben: " << endl;
    cin.getline(meinString, sizeof(meinString));

    cout << "Zeichen ersetzen: " << endl;
    cin.getline(such, sizeof(such));

    cout << "Durch was?: " << endl;
    cin >> ersetz;

    pSuch = such;
    pErsetz = ersetz;
    pString1 = meinString;

    //Hier
    while(*pString1 != '\0')
    {

    pString1++;
    
    if(*pString1 == *pSuch)
    {
       
       
       
    
    }
    

    }

      _getch();
    

    }



  • Benutze std::string, nicht char Arrays.

    #include <iostream>
    #include <string>
     
    int main()
    {
        std::string str("The quick brown fox jumps over the lazy dog.");
     
        str.replace(10, 5, "red"); // (5)
     
        str.replace(str.begin(), str.begin() + 3, 1, 'A'); // (6)
     
        std::cout << str << '\n';
    }
    

    Ergibt: A quick red fox jumps over the lazy dog.

    Siehe https://en.cppreference.com/w/cpp/string/basic_string/replace


  • Mod

    Dein Code ist nicht wirklich C++, sondern C mit cout. Nutz richtiges C++ mit std::string und die Frage wird hinfällig, weil es mit den string-Methoden und den algorithms viel bessere Möglichkeiten gibt als Pointergefrickel.



  • @seppj Ich hab using namespace std; oben definiert da brauche ich doch das std:: nicht, oder?



  • @testettester sagte in Wie greife ich auf ein bestimmtes Pointer-Index zu:

    @seppj Ich hab using namespace std; oben definiert da brauche ich doch das std:: nicht, oder?

    Die Lösung hast du ja präsentiert bekommen. Was deinen 'namespace' angeht:

    Besser ist es, wenn du dich von vornherein daran gewöhnst, den Namespace vor jeden Befehl zu schreiben und auf "using namespace" zu verzichten. Da du früher oder später mit mehreren verschiedenen Namespaces ( auch eigenen ) arbeiten wirst. Und dann wirds irgendwann chaotisch wenn du oben in der CPP-Datei fünf verschiedene Namespaces anmeldest.
    Man verliert dann leicht den Überblick welche Klasse/Funktion in welchem Namespace ist.


  • Mod

    @testettester sagte in Wie greife ich auf ein bestimmtes Pointer-Index zu:

    @seppj Ich hab using namespace std; oben definiert da brauche ich doch das std:: nicht, oder?

    Du solltest meinen Kommentar vor allem unabhängig von solch technischen Detailsfragen verstehen, ob du using namespace benutzt oder nicht. Dein jetziger C++-Stil hat schwere Mängel, die du unbedingt schleunigst abstellen solltest. Das berüchtigte 'C mit cout' ist leider ein sehr häufiges Phänomen, das von den vielen gruselig schlechten C++-Lehrern verursacht wird. Die haben 1960 mal Fortran gelernt und haben seither bloß alle 10 Jahre mal ihre Syntax ein bisschen an die neueste Sprache angepasst. Sie schreiben aber quasi immer noch Fortran in den neueren Sprachen, ohne diese wirklich zu verstehen, und können diese Sprachen daher auch nicht kompetent lehren. Dein jetziger C++-Stil ist, wie Autoreifen an einer Pferdekutsche zu montieren. Sieht dann zwar so ein bisschen wie ein Auto aus, aber es fehlt alles, was das Auto der Kutsche überlegen macht. Und die Kutsche mit Autoreifen funktioniert dann sogar schlechter als hätte man die Kutschenräder dran gelassen.


Log in to reply