keine passende Funktion für Aufruf von " std::basic_ofstream<char, std::char_traits<char> >::basic_ofstream(std::string&)'
Ich versuche, ein Programm zu schreiben, Fragen Sie den Benutzer nach einem Dateinamen und öffnet diese Datei. Wenn ich es kompilieren bekomme ich folgende Fehlermeldung:
no matching function for call to std::basic_ofstream<char,
std::char_traits<char> >::basic_ofstream(std::string&)
Dies ist mein code:
using namespace std;
int main()
{
string asegurado;
cout << "Nombre a agregar: ";
cin >> asegurado;
ofstream entrada(asegurado,"");
if (entrada.fail())
{
cout << "El archivo no se creo correctamente" << endl;
}
}
InformationsquelleAutor ToM MaC | 2016-01-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
std::ofstream
erst gebaut werden können, mit einemstd::string
wenn Sie C++11 oder höher. Typischerweise erfolgt mit-std=c++11
(gcc, clang). Wenn Sie nicht haben Zugang zu c++11 können Sie dann diec_str()
Funktionstd::string
übergebenconst char *
zu denofstream
Konstruktor.Auch als Ben hat hingewiesen Sie eine leere Zeichenkette für den zweiten parameter an den Konstruktor. Der zweite parameter, wenn proivided muss der Typ
ios_base::openmode
.Alle diese Ihr code sollte
oder
Außerdem schlage ich vor Sie Lesen: Warum ist das "using namespace std;" als schlechte Praxis?
Vielen, vielen Dank! aber wo in dem code wird die Funktion
c_str()
? Ich habe es nie benutzt, bevor.Warten, der code passt nicht zu der compiler-Fehlermeldung...
Das ist der Grund, warum ich antwortete, wie ich es Tat. Ich habe darauf hin, die typo als auch mit Namensnennung.
Ich habe aktualisiert die Antwort.
InformationsquelleAutor NathanOliver
Konstruktor
ofstream entrada(asegurado,"");
, nicht übereinstimmt, dass fürstd::ofstream
. Das zweite argument muss eineios_base
, siehe unten:Um Ihr Programm läuft, müssen Sie einfach entfernen Sie die string-literal von Ihrem
ofstream
Konstruktor:Sehen die live-Beispiel hier.
Wenn Sie
c++03
oder niedriger, dann Sie können nicht passieren Sie einestd::string
an den Konstruktor vonofstream
Sie müssen eine c-Zeichenfolge übergeben:InformationsquelleAutor Fantastic Mr Fox