Problem mit Iteratoren

Diskutiere Problem mit Iteratoren im C/C++ Forum im Bereich Programmieren unter Linux/Unix; Hallo Leute! hab da mal folgendes Problem: Bei mir will die stringfunktion insert() einfach nicht klappen und möchte nun fragen wieso nicht,ich...

  1. #1 Kayzill, 17.02.2003
    Kayzill

    Kayzill Greenpeace[GNU-Abteilung]

    Dabei seit:
    16.02.2003
    Beiträge:
    62
    Zustimmungen:
    0
    Ort:
    /usr/home/dave
    Hallo Leute!
    hab da mal folgendes Problem:
    Bei mir will die stringfunktion insert() einfach nicht klappen und möchte nun fragen wieso nicht,ich poste mal ein bischen code:
    Code:
    vector<char> ready(20);
    vector<char> space(2);
    space[0]=(char)" ";
    vector<char>::const_iterator spa=text.begin();
    for(;spa<text.end();spa++)
    {
    spa=find(spa,text.end(),'Ä');
    text.insert(spa,10,'X');
    };
    
    mr.Debugger sagt er hätte Probleme mit dem Iterator 'spa',ich verstehe aber nicht wieso,immerhin müsste er doch richtig definiert worden sein,ich hoffe das ihr mir helfen könnt!
     
  2. Anzeige

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. mapiox

    mapiox Tripel-As

    Dabei seit:
    21.04.2002
    Beiträge:
    176
    Zustimmungen:
    0
    wie ist denn text deklariert ?

    Oder sollte der Iterator auf das erste Element von einem Vector zeigen ?
     
  4. #3 Kayzill, 17.02.2003
    Kayzill

    Kayzill Greenpeace[GNU-Abteilung]

    Dabei seit:
    16.02.2003
    Beiträge:
    62
    Zustimmungen:
    0
    Ort:
    /usr/home/dave
    text ist auch ein vektor aus chars,spa soltle auf auf das erste Element des vektors zeigen,was ya nicht klappen will.
    MfG
     
  5. mapiox

    mapiox Tripel-As

    Dabei seit:
    21.04.2002
    Beiträge:
    176
    Zustimmungen:
    0
    const_iterator geht nicht da nur read_only, du möchtest aber etwas einfügen.
    Code:
    vector<char>::iterator spa = text.begin();
    
    Dieses Beispiel funktioniert, wenn die Anzahl der Elemente des Vectors angegeben wird und genügend Platz zum einfügen vorhanden ist:
    Code:
    vector<char> text(200);
    // füllen ....
    vector<char>::iterator spa = text.begin();
    
     for( ; spa < text.end(); ++spa)
     {
       spa = find(spa,text.end(),'Ä');
       if(spa==text.end()) break;
       text.insert(spa,10,'X');
       spa+=10;
     } 
    
    Bei
    Code:
    vector<char> text;
    
    ändert sich nach insert die Größe des Vectors und der Iterator ist dann üngültig.
     
  6. #5 Kayzill, 17.02.2003
    Kayzill

    Kayzill Greenpeace[GNU-Abteilung]

    Dabei seit:
    16.02.2003
    Beiträge:
    62
    Zustimmungen:
    0
    Ort:
    /usr/home/dave
    ah okay das hab ich mri schon gedacht,nur irgendwie ging das ohen const auch net,ich probiers nachher mal bei mir Zuhause und danke hiermit schonmal:)
    MfG
     
  7. #6 LiquidAcid, 08.07.2003
    LiquidAcid

    LiquidAcid Grünschnabel

    Dabei seit:
    08.07.2003
    Beiträge:
    3
    Zustimmungen:
    0
    Ort:
    NRW
    Versuch mal den Iterator auf Ungleichheit mit dem End-Iter zu testen, also != xyz.end(), so mache ich das immer. KA obs wirklich daran liegt.

    cya
    liquid
     
  8. trapni

    trapni Grünschnabel

    Dabei seit:
    09.07.2003
    Beiträge:
    2
    Zustimmungen:
    0
    Ort:
    Germany/Berlin
    Nun, so wie es aussieht willst du in einem string einfach alle AEs durch ein X ersetzen, dazu kannst du die einfache std::replace(beginIter, endIter, oldV, newV) benutzen:

    Code:
    std::replace(text.begin(), text.end(), 'ä', 'X');
    Zumal in deinem code sowieso ungeklaerte und falsche dinge drin standen, die aber wohl schon oben genannt wurden.

    MfG,
    Christian.
     
Thema:

Problem mit Iteratoren

Die Seite wird geladen...

Problem mit Iteratoren - Ähnliche Themen

  1. Iteratoren-Problem

    Iteratoren-Problem: Hallo, ich hab vor einiger Zeit angefangen mein erstes C++-Buch zu lesen und bin jetzt auch schon beim zweiten. Da man aber bekanntlich am besten...
  2. Linux 5.6 löst Jahr-2038-Problem für 32-Bit-Systeme

    Linux 5.6 löst Jahr-2038-Problem für 32-Bit-Systeme: Die kommende Version 5.6 wird der erste Linux-Kernel sein, der gegen das Jahr-2038-Problem auf 32-Bit-Systemen immun ist. Damit das greifen kann,...
  3. kleines curl Problem

    kleines curl Problem: Hallo, ich bin LINUX Frischling und hab mich ein wenig in eien Sackgasse verlaufen... Ich habe vor, die Verzeichnisgröße via curl Befehl in eine...
  4. Samba 4.0.0 - DNS-Problem

    Samba 4.0.0 - DNS-Problem: Hallo, ich betreibe seit 2013 einen Samba4 Server auf Basis der sernet-Pakete als DC für eine kleine Domäne. Nur mit dem DNS gibt es Probleme....
  5. Mageia 7.1 patcht Boot-Problem bei AMD Ryzen 3000 CPUs

    Mageia 7.1 patcht Boot-Problem bei AMD Ryzen 3000 CPUs: Mageia hat kurzfristig mit Version 7.1 ein Point-Release veröffentlicht, um einen Boot-Fehler mit AMDs Ryzen 3000 CPUs zu beheben, der einige...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden