Problem mit fopen (Quelldatei soll von der Eingabe abhängig sein)
-
Hallo zusammen,
ich habe ein C++ Programm geschrieben mit dem die Mittelwerte der verschiedenen Spalten einer Datei berechnet werden. Soweit klappt alles, solange ich den Dateinamen im Programm selbst vorgebe. Jedoch will ich den Dateinamen über eine Abfrage eingeben (siehe dicker Text im Quelltext unten). Die Funktion fopen benötigt aber den Dateityp const char. Die Umformatierung des eingegbenen strings durch (const char
in den benötigten Dateityp liefert beim kompilieren den Fehler:
"error C2440: 'Typumwandlung': 'std::string' kann nicht in 'const char *' konvertiert werden" (Visual c++ Express 2000 compiler).Wie kann ich den Quelldateinamen über eine Abfrage an der im Quellcode angegebenen Stelle (siehe fetter Text im Quellcode) vorgeben?
#include<cstdlib>
#include<fstream>
#include<iostream>
#include<string>
#include<cstdio>
using namespace std;int main(){
float Zeit[1000];
float Spannung[1000];
float Strom[1000];
float Channel3[1000];
float Spannungmittel = 0;
float Strommittel = 0;//string quelldateiname;
//cout<< "Quelldateiname?";
//cin >> quelldateiname;FILE* quelle;
quelle = fopen("03_0001.dat", "r"); // <-- Hier soll anstelle einer fest vorgegebenen Datei die vom Benutzer eingegebene Quelldatei (quelldateiname) verwendet werden.
for(int i=1;i<1001;i++){
fscanf(quelle, "%f\t%f\t%f\t%f", &Zeit[i], &Spannung[i], &Strom[i], &Channel3[i]);}
string zieldateiname="Mittelung_03_0001.dat";
ofstream Zieldatei(zieldateiname.c_str());
for(int i=1;i<1001;i++){
Spannungmittel=Spannungmittel+Spannung[i];
Strommittel = Strommittel+Strom[i];Zieldatei << i << '\t' << Spannung[i] << '\t' << Strom[i] << '\t' << Spannungmittel/i << '\t' << Strommittel/i << '\n';
}}
-
wenn
strdeinstd::stringist, dann kommst du mitstr.c_str()an eineconst char*representation. Siehe http://www.cplusplus.com/reference/string/string/c_str/ (bei dem ofstream machst du es ja richtig)btw. fopen ist C Zeugs. Das nimmt man in C++ eigentlich nicht mehr.
und benutz bitte code-tags.