Meine IDE hat Probleme mit der Variablen "Dateiname" in der letzten Zeile. Kann mir jemand sagen warum?
switch(filename_selection)
{
case 1: filename_selection = 1;
filename = "foo3.sql";
break;
case 2: filename_selection = 2;
filename = "foo2.sql";
break;
case 3: filename_selection = 3;
filename = "foo1.sql";
break;
default:
cout << "Invalid selection." << endl;
break;
}
ofstream File;
File.open(filename, ios::out | ios::trunc);
Antworten:
4 für die Antwort № 1Meine Kristallkugel ist heute etwas bewölkt, aber ich glaube, ich kann etwas sehen ...
<psychic-powers>
Ihre filename
wird als deklariert std::string filename;
. Leider in C ++ 03, std::(i|o)fstream
Klassen hatten keine Konstruktoren, die dies akzeptieren std::string
nur Variablen char const*
Einsen.
Lösung: Pass filename.c_str()
.
</psychic-powers>
1 für die Antwort № 2
Vorausgesetzt, dass Dateiname ist vom Typ Std :: ZeichenfolgeDann können Sie es nicht direkt an den ofstream-Konstruktor übergeben: Du brauchst die Kraft von c_str ()
switch(filename_selection)
{
case 1:
//filename_selection = 1; WHAT IS THIS?
filename = "foo3.sql";
break;
case 2:
///filename_selection = 2; ???
filename = "foo2.sql";
break;
case 3:
///filename_selection = 3; ???
filename = "foo1.sql";
break;
default:
cout << "Invalid selection." << endl;
break;
}
ofstream File;
File.open(filename.c_str(), // <<<
ios::out | ios::trunc);
Sie scheinen auch falsch verstanden zu haben, wie man das benutzt Anweisung wechseln.