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 <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

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();
2

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Sophia Al-Mansoor

Sophia Al-Mansoor

Global Business & E-Commerce Reporter

Sophia analyzes international trade, startup ecosystems, retail transformation, and supply chain logistics for modern digital publications.

Share this article
Twitter Facebook Pinterest