简体   繁体   中英

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

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 char s. 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();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM