Einzelnes Zeichen an eine Zeichenkette (string) anhängen



  • Hallo,

    möchte an einen string ein einzelnes Zeichen (char) anhängen. Mache das so:

    AnsiString Zeichenkette = "";  //leere Zeichenkette
     char Zeichen = '\0'; //leeres Zeichen
     ...
     Zeichen = 'A';
     Zeichenkette = Zeichenkette + Zeichen;  //danach soll Zeichenkette den Wert A haben, u. wenn ich die Anweisung wiederhole in einer Schleife z.B. "AAAA.."
    

    Beim Debuggen hat Zeichenkette aber immer den Wert {""} u. ändert sich nie!
    Sicher einfacher Fehler, aber ich suche schon ewig, Danke!



  • Wie wäre es mit std::string?

    #include <string>
    ...
    std::string str;
    	for (int i = 0; i < 5; i++)
    		str.push_back ('a');
    	std::cout << str << std::endl;
    


  • Habe aber die Zeichenkette schon als AnsiString deklariert u. an anderer Stelle im Einsatz.
    Es muss doch einfach möglich sein, ein einzelnes Zeichen anzuhängen.





  • Es funktioniert alles, wenn ich

    char Zeichen = 'x';
    

    setze. Dann werden die Zeichen schön an die Zeichenkette angehängt.
    "Zeichen" soll aber zu Beginn gar kein Zeichen enthalten, sondern leer sein.
    Das macht man doch mit

    char Zeichen = '\0';
    

    So funktioniert das Zeichenanhängen:

    do
     {
      Zeichen = 'a';
      Zeichenkette = Zeichenkette + Zeichen;
      Zeichen = 0;  //Zeichen zurücksetzen
    ...
      Zeichen = 'b';
    ...
      } while...
    

    aber so nicht mehr:

    do
     {
      Zeichenkette = Zeichenkette + Zeichen;
      Zeichen = 0;  //Zeichen zurücksetzen
    ...
      Zeichen = 'b';
    ...
      } while...
    

    ??? was soll das denn für ein Käse??? Versteht das jemand?



  • Ich weiss nicht genau, wie AnsiString arbeitet, aber ich würde sagen, dass das '/0' dir den String einfach als zu Ende delariert. Und wenn du noch was anhängst, wird das hald nicht mehr ausgegeben.

    EDIT:
    Habe letztens gehört, dass gewisse IDE's (also die Konsole) anders gearbeitet hat und dort gab es auch ein Problem, dass die Konsole des Projektes etwas anderes ausgegeben hat, als andere Fenster..



  • @teacherwilli
    Ein AnsiString ist nach der Erzeugung ohnehin leer. Du brauchst da kein spezielles Zeichen anzuhängen.



  • ein char auch?

    Zudem muss ich aber in der while-Schleife "Zeichen" leeren zur Durchführung von div. Zeichenoperationen.



  • Was meinst du mit Zeichen leeren?
    Ein Zeichen entfernst du aus einem String indem du es darau löschst. Bei AnsiString mit Delete. Ein einzelnes Zeichen kannst du nicht leeren.



  • Doch: wenn ich Zeichen = 0 setze ist die char-Variable Zeichen leer bzw. hat den binären Wert 00000000. Das brauche ich zur Bitmanipulation eines einzelnen Zeichens.



  • Bitmanipulation in nem String? Das hört sich nach Quatsch an. Was soll das am Schluss werden?


Anmelden zum Antworten