String füllen



  • sonst kannst auch mal hier schaun ob du was findest:
    http://www.cppreference.com/cppstring/
    😉



  • öhm.. ja ..HIMMEL .... da mus man erstmal das finden was man brauch.. aber gut

    sagt mir doch bitte jetzt nur noch eins für Heute..

    ich will eine int variable Inhalt die zahl 3, in dinen string füllen

    etwa so

    String Klaus;
    int mueller;
    
    Klaus=mueller;
    

    Das gibt nen konflickt ich weis... wie mach ich es richtig.. die drei die im Int stand soll als Zeichen 3 im string stehen



  • FAQ 😉



  • also mit AnsiString geht ads doch:

    String str;
    int i = 3;
    str=i;
    

    geht!



  • #include <sstream>
    #include <string>
    #include <iostream>
    using namespace std;
    int main()
    {
        double d = 3.14;
        ostringstream Str;
        Str << d;
        string ZahlAlsString(Str.str());
        cout << ZahlAlsString << endl;
    }
    

    schaut mal.. das ist für mich sehr interessant... aber

    ich will das Objekt Str mehrmals füllen und muss es nun zwischendurch leeren ansonsten steht immermehr drinn.. wie mach ich das?



  • Str.str("")

    Allgemeine Funktion zur Konvertierung nach std::string (ist für eingebaute Datentypen wohl nicht 100% optimal, erfüllt aber ihren Zweck)

    template <typename T>
    std::string toString( const T& t)
    {
      ostringstream oss;
      oss << t;
      return oss.str();
    }
    


  • Danke sehr hilfreich, aber noch eins... ich will ein " als Text in ein Objekt füllen, damit entwerte ich es mit dem \ klar... aber er erkennt es nicht an..

    SOBJ1 << "side=\"CIV\"" << endl;
    


  • Hallo... kann jemand die letzte Frage beantworten?



  • Makconner schrieb:

    Hallo... kann jemand die letzte Frage beantworten?

    Klar. Sobald du eine ordentliche Fehlerbeschreibung lieferst.

    "Er erkennt es nicht an" ist jedenfalls keine.



  • ok.. wenn ich das prog laufen lassen will bricht er den Vorgang ab.. eben wir bei einem Fehler, er denkt das ein } oder ; fehlt.... aber es liegt nur an den "

    er schreibt auch das er einen String im String findet.. und damit kommt er nicht klar, nehm ich die zwei " raus.... dann geht es.. klares Zeichen.. ihm misfällt die Syntax



  • 5er1al schrieb:

    also mit AnsiString geht ads doch:

    Wir sind hier aber im C++ Forum, nicht im BCB Forum. Std. C++ kennt die Klasse AnsiString nämlich nicht. 😉



  • och man... bis auf die zwei "" im String geht doch alles.... das muss doch irgendwie hinzubekommen sein...



  • Bitte bitte, zeig uns die komplette Zeile, in der der Fehler gefunden wird, ein paar Zeilen drumherum, und die Fehlermeldung des Compilers, nicht deine Interpretation.



  • PuppetMaster2k schrieb:

    5er1al schrieb:

    also mit AnsiString geht ads doch:

    Wir sind hier aber im C++ Forum, nicht im BCB Forum. Std. C++ kennt die Klasse AnsiString nämlich nicht. 😉

    Richtig, aber er schrieb String, und es sollte bekannt sein String==AnsiString!

    Daher dachte ich...oK?



  • 😉 😉

    while(anzahlsoldaten!=0)
    		{
    		SOBJ1 << "class Item" << anzahlsoldatenplus << "\n{\n" << endl;
    		string Zwischentext(SOBJ1.str());
    		schreiben2(Zwischentext);
    		SOBJ1.str("");
    				SOBJ1 << "side=\"CIV\"" << endl;
    				string Zwischentext(SOBJ1.str());
    				schreiben2(Zwischentext);
    				SOBJ1.str("");
    		Zwischentext="\}\;\n";
    		schreiben2(Zwischentext);
    		anzahlsoldaten=anzahlsoldaten-1;
    		anzahlsoldatenplus++;
    		}
    

    ok in dem Code ist der Fehler... dann mal los 🤡

    Fehler sind

    '}': nicht erkannte Folge von Escape-Zeichen
    'sdt::string Zwischentext':Neudefinition



  • \} gibt es nicht. Und Zwischentext erzeugst du zweimal in der Schleife.

    Aber das sagte der Compiler ja bereits ;).

    mfg
    v R



  • nun.. das \{ hab ich rausgenommen, es war fürwar nicht nötig ..aber

    das einzige Problem ist hier

    SOBJ1 << "side=\"CIV\"" << endl;
    

    die ausgabe in der Textdatei soll so aussenen

    side="CIV"
    

    ich benutze das um in eine Textdatei zu schreiben, ich mus sehr variabel ein und auslesen gleichzeitig unter verwendung von Variablen, darumbenutze ich das Objekt was auch sehr gut geht, aber.... ich muss in dem Text auch diese " verwenden.. wir mach ich das?



  • Makconner schrieb:

    das einzige Problem ist hier
    ...
    die ausgabe in der Textdatei soll so aussenen

    Du musst an deinen Fehlerbeschreibungen arbeiten. "Das einzige Problem ist hier" ist keine ausreichende Fehlerbeschreibung. Wenn deine Fähigkeiten, was Fehlerursachendiagnose angeht, so toll wären, dass du uns nur deine Interpretation liefern müsstest, müsstest du gar nicht hier fragen.

    Also nochmal:
    Bekommst du eine Fehlermeldung? Wenn ja, welche?
    Ist die Ausgabe nicht wie gewünscht? Falls ja, wie soll sie aussehen, und wie sieht sie tatsächlich aus?



  • Oh man ... heul ... ich versuchs nochmal 😃

    1. Es gibt keine Ausgabe denn das Prog bricht mit dem Fehler ab
    2. die Fehlermeldungen: '}': nicht erkannte Folge von Escape-Zeichen
    'sdt::string Zwischentext':Neudefinition
    3. Das Programm kann die zwei Anführungsstriche nicht verstehen, da sie ja als Test
    selber in Anführungsstrichen stehen... ist doch klar... man kann ein n als Zeilenumbruch mit einem \ entwerten.... aber man kann kein " schreiben indem man es mit einem \ entwertet.... es mus einen anderen Weg geben.



  • ok... folgendes.. an den Anführungszeichen liegt es nicht.. ich hab es durchgeprüft

    es mus irgendwas mit dem Objekt oder der Syntax sein

    while(anzahlsoldaten!=0)
    		{
    		SOBJ1 << "class Item" << anzahlsoldatenplus << "\n{\n" << endl;
    		string Zwischentext(SOBJ1.str());
    		schreiben2(Zwischentext);
    		SOBJ1.str("");
    				SOBJ1 << "side=" << "CIV"  << endl;
    				string Zwischentext(SOBJ1.str());
    				schreiben2(Zwischentext);
    				SOBJ1.str("");
    		Zwischentext="}\;\n";
    		schreiben2(Zwischentext);
    		anzahlsoldaten=anzahlsoldaten-1;
    		anzahlsoldatenplus++;
    		}
    

    das ist ne schleife und sie läuft nicht, wenn ich den eingerückten Teil rausnehme läuft es.


Anmelden zum Antworten