使用字符串作为std :: fstream的文件名.

use*_*517 0 c++ file-handling text-files

我遇到过关于数据文件的问题,这些问题告诉我们编写一个函数来做东西.在每个其他问题中,我们处理固定文件名,例如"abc.txt",因此函数不会概括.我想知道数据文件是否有一种方法可以在语句中使用字符串变量:

fstream file("abc.txt",ios::in|ios::out);

并把它变成:

char str[20]="Newfile.txt";
fstream file(str,ios::in|ios::out);
Run Code Online (Sandbox Code Playgroud)

有没有办法使用字符串作为文件名std::fstream?我尝试使用字符串,但没有创建这样的文件,虽然程序的编译没有显示任何错误.

Jer*_*fin 6

这取决于编译器.这种方式始终如一:

void do_something(std::string const &filename) {

    std::fstream(filename.c_str());
    // ...
}
Run Code Online (Sandbox Code Playgroud)

这种方式适用于新的(C++ 11)编译器,但不适用于较旧的编译器:

void do_something(std::string const &filename) {

    std::fstream(filename);
    // ...
}
Run Code Online (Sandbox Code Playgroud)