Opening a File Based on User Input C++
I Am Trying to Make a Program That Would Open a File Based on the Users Input. Here`s My Code: #Include #Include #Include Using Namespace Std; Int Main() {...
I am trying to make a program that would open a file based on the users input. Here`s my code:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
string filename;
ifstream fileC;
cout<<"which file do you want to open?";
cin>>filename;
fileC.open(filename);
fileC<<"lalala";
fileC.close;
return 0;
}
But when I compile it, it gives me this error:
[Error] no match for 'operator<<' (operand types are 'std::ifstream {aka std::basic_ifstream<char>}' and 'const char [7]')
Does anyone know how to solve this? Thank you...
2 Answers
Your code has several problems. First of all, if you want to write in a file, use ofstream. ifstream is only for reading files.
Second of all, the open method takes a char[], not a string. The usual way to store strings in C++ is by using string, but they can also be stored in arrays of chars. To convert a string to a char[], use the c_str() method:
fileC.open(filename.c_str());
The close method is a method, not an attribute, so you need parentheses: fileC.close().
So the correct code is the following:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
string filename;
ofstream fileC;
cout << "which file do you want to open?";
cin >> filename;
fileC.open(filename.c_str());
fileC << "lalala";
fileC.close();
return 0;
}
You cannot write to an ifstream because that is for input. You want to write to an ofstream which is an output file stream.
cout << "which file do you want to open?";
cin >> filename;
ofstream fileC(filename.c_str());
fileC << "lalala";
fileC.close();