2016-09-14 1 views
-2

Besoin d'aide pour corriger mon code, je ne sais pas quel est le problème. J'utilise C++ 11, en essayant d'écrire un vecteur dans un fichier en écrivant individuellement chaque structure. La section du code de retour est une erreur:d'erreur retournant "Aucune fonction correspondante pour appeler std :: basic_ofstream <char> :: close (const char [14])"

string craigSave = "craigSave.txt"; 
ofstream file(craigSave.c_str()); 
file.open("craigSave.txt"); 
for (int i=0; i<finalVector.size(); i++){ 
    file << finalVector[i]<<endl; 
} 
file.close("craigSave.txt"); 
cout<<"Thanks for shopping!"<<endl; 
done = true; 

L'erreur renvoyée est sur la ligne « file.close » et est:

error: no matching function for call to 'std::basic_ofstream::close(const char [14])'

je recherche sur cette erreur semble indiquer avoir besoin d'utiliser char * en tant qu'argument au lieu d'une chaîne, mais j'utilise C++ 11, donc il devrait accepter les chaînes. Aussi il est étrange qu'il n'y ait pas d'erreur pour la ligne file.open, comme toute recherche montre l'erreur étant là, pas à file.close

+2

'close' ne prend aucun paramètre. Où faites-vous vos recherches? (Où que ce soit, rendez-vous [ici] (http://en.cppreference.com/w/) à la place.) – molbdnilo

+0

Le constructeur a ouvert le fichier. L'appel de 'file.open()' n'est pas nécessaire. Le destructeur fermera le fichier. l'appel de 'file.close()' n'est pas nécessaire. –

Répondre

3

Utilisez simplement file.close();, il n'est pas nécessaire de passer à nouveau le nom du fichier.

Voir http://www.cplusplus.com/reference/fstream/ofstream/close/.

En outre, ofstream s sont des objets RAII, ce qui signifie que le dossier sera fermé automatiquement une fois que l'objet ofstream est hors de portée (voir do I need to close a std::fstream?):

{ 
    ofstream out("name"); 
    // do something with out... 
} // out.close is called automatically 
+1

Mieux encore, supprimez la ligne tout à fait. – AndyG

+0

C'est vrai, je vais développer la réponse. Merci! – rainer

+0

Merci! Question de suivi, puisque je n'ai pas spécifié d'emplacement pour ce fichier, où le chercher? Dans le même dossier que le .cpp lui-même?> –