char-Array und string Array



  • aslo ich habe folgendes Problem:
    wie kann ich Elemente eines char Arrays addieren und in ein string- Array schreiben?
    Verdeutlichung:
    char Array:
    char[0]='b'
    char[1]='a'
    char[2]='d'

    sollen addiert in ein string array schreiben:
    string array:
    string[0]="bad"

    wie kann ich das machen??



  • Mir ist nicht klar warum du es so umständlich machen willst. Aber um dein Beispiel aufzugreifen...

    char array[3] = { 0 }; 
    array[0] = 'b';
    array[1] = 'a';
    array[2] = 'd';
    
    string str = string(array,array+3);
    


  • Hi!

    Wurde im anderen Thread doch richtig gemacht, beim push_back mit dem vector.
    Erstmal solltest du auch die richtige C++-Syntax verwenden:

    char cArray[4];
    cArray[0]='b';
    cArray[1]='a';
    cArray[2]='d';
    cArray[3]='\0';
    // oder direkt:
    char cArray[4] = "bad";
    

    Wenn du das in einem String speichern willst:

    std::string foo(cArray);
    

    Wenn du ein String-Array dafür verwenden willst:

    std::string foo[5];
    foo[0]=cArray;
    

    Für einen Vector:

    std::vector<std::string> sVector;
    sVector.push_back(cArray);
    


  • Also ich habe den Inhalt einer Datei nach dem lesen der Datei mit is.read(bla) in einem char* gespeichert.ASnschließend habe ich den Inhalt in einen char Array geschoben.
    der Inhalt der Datei lautet : hallo;buh;
    nun muss ich nach den ; parsen.
    Ich gehe also das char Array durch und wenn ein ';' da is erhöhe ich bei foo[i]
    i um eins (foo ist das string array),wenn es kein ';' ist soll er das aktuelle Zeichen in foo[i] reinschreiben, sodass in foo[i] dann am ende "hallo" steht und in foo[i+1] dann buh.



  • Wieso arbeitest du nicht direkt auf String, ist doch viel einfacher bei sowas davon auch Teile zu extrahieren. Ansonsten würde ich dir strtok empfehlen (wie das Funktioniert kannst du in einer Referenz deiner Wahl nachschlagen). Wenn du das direkt in einen String pufferst geht das etwa so:

    std::vector<std::string> dateiInhalt;
    // in der Schleife zum Auslesen der Datei:
    std::string tmp("");
    std::getline(in, tmp);
    dateiInhalt.push_back(tmp);
    // nach der Schleife:
    std::string foo(dateiInhalt[0]);
    std::vector<std::string> woerter;
    std::size_t pos = foo.find(";");
    woerter.push_back(foo.substr(0, pos);
    foo.erase(0, pos+1);
    

    Das zum filtern aller Wörter packst du einfach in eine Schleife und ersetzt i durch 0. Geht sicher einfacher, aber das war jetzt das was mir mal so auf die schnelle eingefallen ist. 🙂



  • Also erstens kannst du dir das umkopieren sparen und direkt dein char-Array an is.read() weitergeben, zweitens würde sich für Texteingabe eher get() oder getline() anbieten und drittens kannst du auch direkt in Strings einlesen:

    vector<string> sfield;
    string data;
    getline(is,data,';');//liest bis zum nächsten ;
    sfield.push_back(data);
    

    oder:

    vector<string> sfield;
    string data;
    getline(is,data);//liest komplette Textzeile
    size_t pos;
    while((pos=data.find(';'))!=string::npos)
    {
      sfield.push_back(data.substr(0,pos-1);
      data.erase(0,pos);
    }
    

Anmelden zum Antworten