J'ai essayé d'écrire un programme de base de données simple. Le problème est que ofstream ne veut pas faire un nouveau fichier.Ofstream ne crée pas un nouveau fichier correctement
Voici un extrait du code incriminé.
void newd()
{
string name, extension, location, fname;
cout << "Input the filename for the new database (no extension, and no backslashes)." << endl << "> ";
getline(cin, name);
cout << endl << "The extension (no dot). If no extension is added, the default is .cla ." << endl << "> ";
getline(cin, extension);
cout << endl << "The full directory (double backslashes). Enter q to quit." << endl << "Also, just fyi, this will overwrite any files that are already there." << endl << "> ";
getline(cin, location);
cout << endl;
if (extension == "")
{
extension = "cla";
}
if (location == "q")
{
}
else
{
fname = location + name + "." + extension;
cout << fname << endl;
ofstream writeDB(fname);
int n = 1; //setting a throwaway inteher
string tmpField, tmpEntry; //temp variable for newest field, entry
for(;;)
{
cout << "Input the name of the " << n << "th field. If you don't want any more, press enter." << endl;
getline(cin, tmpField);
if (tmpField == "")
{
break;
}
n++;
writeDB << tmpField << ": |";
int j = 1; //another one
for (;;)
{
cout << "Enter the name of the " << j++ << "th entry for " << tmpField << "." << endl << "If you don't want any more, press enter." << endl;
getline(cin, tmpEntry);
if (tmpEntry == "")
{
break;
}
writeDB << " " << tmpEntry << " |";
}
writeDB << "¬";
}
cout << "Finished writing database. If you want to edit it, open it." << endl;
}
}
EDIT: OK, juste essayé
#include <fstream>
using namespace std;
int main()
{
ofstream writeDB ("C:\\test.cla");
writeDB << "test";
writeDB.close();
return 0;
}
et cela ne fonctionne pas, il est donc accès des problèmes d'autorisation.
donne un exemple d'exécution d'un programme et ce que vous entrez. –
vous n'avez pas non plus besoin de "double barre oblique inverse" lors de la saisie de la chaîne de cette façon, uniquement pour les littéraux de chaîne dans votre code. – HerrJoebob
Réduire votre source à * seulement * afficher le problème. Ensuite, vérifiez que c'est bien * le * problème. Je suppose que vous essayez d'ouvrir un fichier dans un endroit drôle qui n'existe pas. Un programme simple pour vérifier que 'std :: ofstream' fonctionne comme prévu serait le suivant:' #include int main() {std :: ofstream out ("empty.txt"); } '. En partant de là, vérifiez où le fichier créé cesse d'être créé. –