For some reason i cant output to a file unless it was already created.
Here's my code.

fstream myfile;
    myfile.open (filename.c_str(), ios_base::in);
    if (!myfile)
    {
        myfile.close();
        myfile.open (filename.c_str(), ios::out);

        avatar.name = name;
        avatar.init();
        myfile << "Name = " << avatar.name << endl;
        myfile << "hp = " << avatar.hp << endl;
        myfile << "mana = " << avatar.mana << endl;
        myfile << "level = " << avatar.level << endl;
        myfile << "strength = " << avatar.strength << endl;
        myfile << "intelligence = " << avatar.intelligence << endl;
        myfile << "wisdom = " << avatar.wisdom << endl;
        myfile << "dexterity = " << avatar.dexterity << endl;
        myfile << "charisma = " << avatar.charisma << endl;
        myfile.close();
    }
    else
    {
        cout << name << " already exists" << endl;
    }

Now i create the file and output the data into it, but it wont work unless i have the file already created and open it.

You can create a file and write to it like this:

#include<iostream>
#include<fstream> // for file reading & writing
#include<conio.h> //for getch()

using namespace std;
int main(){
fstream myfile; //you can use ofstream for writing to a file and ifstream for reading from a file...& probably should
    myfile.open ("MyNewFile.txt"); //put whatever name you want
    if (!myfile) //um, why do you try to write to a file that has not opened?
    {
     //I would show an error if the file doesn't open
     cout<<"File not found.";
//        myfile.close();  how can you close it if you don't have one?
//        myfile.open (filename.c_str(), ios::out);
//
//        avatar.name = name;
//        avatar.init();
//        myfile << "Name = " << avatar.name << endl;
//        myfile << "hp = " << avatar.hp << endl;
//        myfile << "mana = " << avatar.mana << endl;
//        myfile << "level = " << avatar.level << endl;
//        myfile << "strength = " << avatar.strength << endl;
//        myfile << "intelligence = " << avatar.intelligence << endl;
//        myfile << "wisdom = " << avatar.wisdom << endl;
//        myfile << "dexterity = " << avatar.dexterity << endl;
//        myfile << "charisma = " << avatar.charisma << endl;
//        myfile.close();
    }
    else
    {
       // cout << name << " already exists" << endl;
       myfile<<"write something to the file.";
       cout<<"Writing to file.";
       myfile.close();
    }
getch();
return 0;
}

Edited 6 Years Ago by MyrtleTurtle: n/a

You can also create and open your file this way, which is more like what you're doing:

ofstream myfile;

    string filename = "MyNewFile2.txt"; //or whatever name you want
    myfile.open (filename.c_str(), ios::out);

Edited 6 Years Ago by MyrtleTurtle: n/a

mybad forgot to say, that was checking to see if the file already existed. So if it didnt open because it didnt exist then it would create and open one.

This question has already been answered. Start a new discussion instead.