Wer kann mir den C++ Code Snippet anpassen?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
DEBIANUNDANDREAS
Beiträge: 1304
Registriert: 01.06.2013 10:37:46

Wer kann mir den C++ Code Snippet anpassen?

Beitrag von DEBIANUNDANDREAS » 25.11.2013 16:44:48

Der folgende C++ Code ist ein Snippet.
Ich komme damit nicht zurecht,weil ich will eine append Erweiterung in dem Quelltext anbringen, rote Schriftfarbe.

Code: Alles auswählen

template<class T> std::string toString(const T& t)
                                                                                                {
                                                                                                std::ostringstream stream;
                                                                                                stream << t;
                                                                                                return stream.str();
                                                                                                }
                                                                                                template<class T> T fromString(const std::string& s)
                                                                                                {
                                                                                                std::istringstream stream (s);
                                                                                                T t;
                                                                                                stream >> t;
                                                                                                return t;

                                                                                                }

Code: Alles auswählen

std::string Monat1= toString<int>(z.tm_mday);
z.tm_mon=z.tm_mon+1;
std::string Monat2= toString<int>(z.tm_mon); 

Code: Alles auswählen

dataus.open ("/home/internet/Arbeitsfläche/Programmieren-quellcode/C++ output/Datei/Datei/2013/"+Monat2+"/"+Monat1+"/"+"KL.dat" , ios_base::app );
[/color]
Das Problem ich will mehrere Stringvariablen aneinander hängen und dataus.open will es nicht weil gcc/g++ kompiliert es nicht. >>> Monat2+"/"+Monat1+"/"+"KL.dat"
|Fehler: keine passende Funktion für Aufruf von »std::basic_ofstream<char>::open(std::basic_string<char>, const openmode&)«|
Der restliche Code lass ich weg, der Übersichtlichkeit wegen.
Zuletzt geändert von DEBIANUNDANDREAS am 02.12.2013 16:36:15, insgesamt 1-mal geändert.

Benutzeravatar
DEBIANUNDANDREAS
Beiträge: 1304
Registriert: 01.06.2013 10:37:46

Re: Wer kann mir den C++ Code Snipplet anpassen?

Beitrag von DEBIANUNDANDREAS » 29.11.2013 05:51:29

Dieses wie oben, wie kann ich in folgendes Codefragment, eine Variabel einbringen.

Code: Alles auswählen

dataus.open ("/home/internet/Arbeitsfläche/Programmieren-quellcode/C++ output/Datei/Datei/2013/"+Monat2+"/"+Monat1+"/"+"KL.dat" , ios_base::app );
Dieses funktioniert

*****************************************************
Ich versuchte es so

Code: Alles auswählen

string mystring;
mystring="/home/internet/Arbeitsfläche/Programmieren-quellcode/C++ output/Datei/Datei/2013/"+Monat2+"/"+Monat1+"/"+"KL.dat";
dataus.open(mystring, ios_base::app);
(funktioniert nicht)

Benutzeravatar
bmario
Beiträge: 1257
Registriert: 05.09.2007 12:15:47
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dresden

Re: Wer kann mir den C++ Code Snipplet anpassen?

Beitrag von bmario » 29.11.2013 23:13:04

Nichts zu tun ist viel besser,
als mit viel Mühe nichts zu schaffen. - Laotse

Benutzeravatar
DEBIANUNDANDREAS
Beiträge: 1304
Registriert: 01.06.2013 10:37:46

Re: Wer kann mir den C++ Code Snipplet anpassen?

Beitrag von DEBIANUNDANDREAS » 30.11.2013 13:10:09

Der folgende Code funktioniert nicht.

Code: Alles auswählen

    #include <iostream>
    #include <fstream>
    using namespace std;
     
    int main() {
    std::string Monat1= "1";
    std::string Monat2= "2";
     
    std::fstream dataus;
     
    dataus.open ("/home/internet/Arbeitsfläche/Programmieren-quellcode/C++ output/Datei/Datei/2013/"+Monat2+"/"+Monat1+"/"+"KL.dat" , ios_base::app );
     
    std::cout << "done\n";
    // your code goes here
    return 0;
    }
|11|Fehler: keine passende Funktion für Aufruf von »std::basic_fstream<char>::open(std::basic_string<char>, const openmode&)«|

Benutzeravatar
DEBIANUNDANDREAS
Beiträge: 1304
Registriert: 01.06.2013 10:37:46

Re: Wer kann mir den C++ Code Snipplet anpassen?

Beitrag von DEBIANUNDANDREAS » 30.11.2013 13:13:33

//dieses habe ich hinzugefügt

Code: Alles auswählen

#include <iostream>
    #include <fstream>
    # include <cstring>       //dieses habe ich hinzugefügt
    using namespace std;
    string Monat1,Monat2;  //dieses habe ich hinzugefügt
    int main() {
    std::string Monat1= "1";
    std::string Monat2= "2";

    std::fstream dataus;

    dataus.open ("/home/internet/Arbeitsfläche/Programmieren-quellcode/C++ output/Datei/Datei/2013/"+Monat2+"/"+Monat1+"/"+"KL.dat" , ios_base::app );

    std::cout << "done\n";
    // your code goes here
    return 0;
    }
Funktioniert es noch immer nicht.

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Re: Wer kann mir den C++ Code Snipplet anpassen?

Beitrag von peschmae » 30.11.2013 13:31:53

Versuchs mal mit:

Code: Alles auswählen

...
    dataus.open ( ("/home/internet/Arbeitsfläche/Programmieren-quellcode/C++ output/Datei/Datei/2013/"+Monat2+"/"+Monat1+"/"+"KL.dat").c_str(), ios_base::app );
...
Hintergrund: dein String "/home.."+... wird in C++ zu einem std::string (wie die Fehlermeldung auch sagt), die Funktion fstream::open() will aber den String als C-String (also ein char* mit null-terminierung).

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Benutzeravatar
DEBIANUNDANDREAS
Beiträge: 1304
Registriert: 01.06.2013 10:37:46

Re: Wer kann mir den C++ Code Snipplet anpassen?

Beitrag von DEBIANUNDANDREAS » 30.11.2013 14:44:05

Habe das folgende C++ Code Snplet in meinen Quelltext eingeflegt.Und auch mehrere Compilerläuf gemacht.
Aber zu einer Dateiausgabe, also append kam es nicht. Die Date KL.dat wurde nicht erstellt.

Code: Alles auswählen

   dataus.open ( ("/home/internet/Arbeitsfläche/Programmieren-quellcode/C++ output/Datei/Datei/2013/"+Monat2+"/"+Monat1+"/"+"KL.dat").c_str(), ios_base::app );
Wer weiss weiter, kann mein Problem mit den Monatsordner, Tagesordner und die Dateiausgabe passend lösen?

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Re: Wer kann mir den C++ Code Snipplet anpassen?

Beitrag von peschmae » 30.11.2013 21:42:57

Der Ordner muss schon existieren, fstream legt nur Dateien an, keine Ordner(hierarchien). Zudem musst du zum schreiben in Dateien entweder einen std::ofstream hernehmen, oder noch den Flag ios_base::out mit einbauen (also insgesamt ios_base::app | ios_base::out).

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Antworten