Hi, I am writing a program to read from a file.

I want to ask the user for the file name to open.

I have tried to use the basic open file code from cplusplus.com and it won't work unless I specify the file name in the code. If I have them enter a file name, I then need to add "'s to it?
Either way, I get errors if I use char or string for the input file name. Can anyone show me how to do this?

Code from cplusplus.com with my variable for the fileName:

#include <iostream>
#include <fstream>
using namespace std;

int main () 
{
char fileName[256];
cout << "Enter a file";
cin >> fileName;             //tried string instead of char with getline(cin, fileName)
                                      //but same problem as below.
                                     
  ofstream myfile;
  myfile.open (fileName);  //should have quotes around the file name
                                       // ex. ("file.text")
                                       // but how to put 
                                       //them in? Won't let me concatenate them in 
  myfile << "Writing this to a file.\n";
  myfile.close();
  return 0;
}

Thanks for any help understanding this

You don't need to put the name of the file to open in quotes unless you hard code it at time of compilation.

You'll also improve your program's safety by using the std::string type:

#include <fstream>
#include <iostream>
#include <string>

using namespace std;

int main()
  {
  string filename;
  cout << "Name your file> ";
  getline( cin, filename );

  fstream file( filename.c_str() );
  if (!file)
    {
    cout << "I could not open the file. Fooey.\n";
    return EXIT_FAILURE;
    }
  else 
    {
    string line;
    int count = 10;
    while ((count > 0) && getline( file, line ))
      {
      cout << line << '\n';
      count--;
      }
    file.close();
    }

  return EXIT_SUCCESS;
  }

Hope this helps.

Thanks for the advise on safety. Can you tell me what is the deal with

int count = 10;
while (count > 0;

and
count--;

I know what they are but what is there purpose? Why count down from a number instead of just write the file? Is that just an example if I want to specify the number of lines to read? If so, what if I don't know how many lines the file is?

It is just an example.

It is a really simple version of a handy little Unix utility called head. It just displays the first ten lines of a file and quits.

OK thanks a lot Duoas :-)

I was able to incorporate using a vector and am working on adding in a string stream now so I can parse it twice for the purpose of reading and writing csv files from user input or reading from an allready existing csv.

Enter name:
Enter age:
Enter filename for name:
Enter filename fir age:
Displayy all names:
Display all age:

How to do this? What are the codes gatiing this output? Hope someone will help me

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