string in array



  • hi,

    ich lese eine eingabe von der tastatur mittels

    std::string type = xy_->readString();

    ein.

    Den string "type" möchte ich dann für meinen stream verwenden:
    Meine Frage ist wie kann ich jetzt den string "type" in ein
    stringarray schreiben?

    std::ofstream rd(string[0], std::ios::binary | std::ios::ate);

    vielen dank schonmal


  • Mod

    Zuweisen?

    Deine Frage ist etwas schwer zu lesen. Beschreib mal genauer was die beteiligten Objekte sind und warum du da Schwierigkeiten siehst.



  • naja ich lese einfach von der tastatur eine string ein:

    vom typ: std::string type

    den eingelesenen stringwert will ich nun für ofstream verwenden um in
    eine datei zu schreiben.

    wenn ich schreibe
    std::ofstream rd(type, std::ios::binary | std::ios::ate);

    bekomm ich zwar keine fehlermeldung aber es wird keine datei geschrieben.

    meine frage ist wie kann ich den eingelesenen string in ein array schreiben damit
    ihn ofstream aktzeptiert:

    std::ofstream rd(type[0], std::ios::binary | std::ios::ate);


  • Mod

    xxmaxx schrieb:

    wenn ich schreibe
    std::ofstream rd(type, std::ios::binary | std::ios::ate);

    bekomm ich zwar keine fehlermeldung aber es wird keine datei geschrieben.

    Niemals kommt da keine Fehlermeldung, wenn type ein std::string ist.

    meine frage ist wie kann ich den eingelesenen string in ein array schreiben damit
    ihn ofstream aktzeptiert:

    std::ofstream rd(type[0], std::ios::binary | std::ios::ate);

    Frag doch gleich nach dem was du erreichen willst, nicht nach dem wie du es machen willst. Deine Array-Idee ist der totale Holzweg. Du suchst schlicht und einfach c_str()



  • Nach dem dritten mal lesen habe ich es endlich verstanden, was du meinst. Was du suchst ist .c_str() 🤡

    Edit: zu langsam 🙂



  • Niemals kommt da keine Fehlermeldung, wenn type ein std::string ist

    habs gerade nochmal versucht. bekomm keine fehlermeldung. nur wird halt auch nichts in die datei geschrieben.

    Du suchst schlicht und einfach c_str()

    Vielen Dank euch hat funktioniert 🙂


  • Mod

    xxmaxx schrieb:

    Niemals kommt da keine Fehlermeldung, wenn type ein std::string ist

    habs gerade nochmal versucht. bekomm keine fehlermeldung. nur wird halt auch nichts in die datei geschrieben.

    Kannst du das mal bitte zeigen? Und welchen Compiler benutzt du dafür?



  • Natürlich wird nichts in die Datei geschrieben. 'type' wird ja bisher nur für den Dateinamen verwendet. Mach stattdessen so etwas:

    std::ofstream rd("C:\\my\\file.txt", std::ios::binary | std::ios::ate);
    rd << type;
    


  • wxSkip schrieb:

    Natürlich wird nichts in die Datei geschrieben. 'type' wird ja bisher nur für den Dateinamen verwendet. Mach stattdessen so etwas:

    std::ofstream rd("C:\\my\\file.txt", std::ios::binary | std::ios::ate);
    rd << type;
    

    Du hast die Frage nicht verstanden. Problem ist, dass ofstream als ersten Parameter einen const char pointer erwartet und keinen string ;).



  • std::string fileName;
    cin >> fileName;
    
    ofstream fileOut( fileName.c_str(), std::ios::binary | std::ios::ate );
    fileOut << "Blablabla, dass soll in die Datei!";
    

    So hier ein kurzes Beispiel wie es funktionieren müsste, haben aber ja die anderen dir auch schon probiert zu erklären. Allerdings würde mich auch mal interessieren welchen Compiler du nutzt und exakt den Code bei dem der Fehler nicht kommt, weil dass kann nun eigentlich echt nicht sein.

    Lg freeG



  • Scorcher24 schrieb:

    wxSkip schrieb:

    Natürlich wird nichts in die Datei geschrieben. 'type' wird ja bisher nur für den Dateinamen verwendet. Mach stattdessen so etwas:

    std::ofstream rd("C:\\my\\file.txt", std::ios::binary | std::ios::ate);
    rd << type;
    

    Du hast die Frage nicht verstanden. Problem ist, dass ofstream als ersten Parameter einen const char pointer erwartet und keinen string ;).

    Ups, da habe ich doch glatt übersehen, dass das Problem schon gelöst ist 😉


Anmelden zum Antworten