AnsiString mit ostringstream verketten (war: operator)



  • Hallo,
    wie kann ich einen AnsiString an einen String und umgekehrt anhängen?

    Danke in voraus!
    Gruß daniel

    Edit:
    Bitte aussagekräftige Überschriften wählen. Danke!



  • Hallo

    was verstehst du unter einen String? std::string? C-Style String?

    AnsiString A_String;
    std::string S_String;
    char *C_String;
    
    ...
    A_String = AString + S_String.c-str(); + C_String;
    S_String = A_String.c_str();
    strncat(C_String, A_String.c_str(), 10); // Max. 10 Teichen aus A_String an C_String anhängen
    

    bis bald
    akari



  • danke!

    Aber ich will AnsiString + ( setfill('0') +setw(4) ) vom Typ ostringstream +
    i=for-Schleife + AnsiString in einen AnsiString zwischenspeichern.
    Will nämlich in der VCL(BCB6) eine Schleife die von 0000 -9999 hoch zählt,aber angefangen eben bei 0000...0010...0100 also immer eine Null weg und da habe ich mehrere Editfelder die angehängt werden müssen.
    Ich hoffe jemand kann mir helfen.
    Gruß daniel



  • Hallo

    Aber ich will AnsiString + ( setfill('0') +setw(4) ) vom Typ ostringstream +
    i=for-Schleife + AnsiString in einen AnsiString zwischenspeichern.

    Verstehe ich nicht. was ist setfill und setw? was hat ostringstream damit zu tun?
    Zeig doch mal einen passenden Codeausschnitt, mit allen Deklarationen.

    Ich kann dir nur sagen, das du auch von AnsiString nach ostringstream in beide Richtungen mit der jeweiligen Methode c_str() bzw str() konvertieren kannst.

    bis bald
    akari



  • for(int i=0;i<10000;i++)
    {
    ostringstream nummer;

    nummer<<" Hallo"<<setfill('0')<<setw(4)<<i;

    cout<<nummer.str();
    }// so sollte es am Ende Aussehen, aber eben nur in der VCL, also Anstatt "Hallo" eben Edit1->Text dann die Nullen(Schleife) und das ganze in einem AnsiString zwischengespeichert
    verstehste ich komm da nicht weiter,
    Und wenn ich nummer.str() in einem AnsiString speichern will(AnsiString a; a=nummer.str();) bekommme ich eine Fehlermeldung (Keine Übereinstimmung für AnsiString::operator=(string) gefunden
    Gruß daniel



  • Hallo

    nummer<<Edit1->Text.c_str()<<setfill('0')<<setw(4)<<i;
    

    Wobei ich mich allerdings frage, warum du VCL (TEdit) und Konsole (cout) mixen willst.

    bis bald
    akari



  • std::string stdstr = nummer.str();
    AnsiString astr = stdstr.c_str();
    // oder gleich
    AnsiString astr = (nummer.str()).c_str();
    


  • Ich Danke euch wie verückt es funzt!!! 😃

    Gruß daniel


Anmelden zum Antworten