Search code examples
c++fileiouser-input

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


Solution

  • 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;
    }