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

时间:2013-02-04 04:55:03

标签: c++ text-files file-handling

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

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

并将其转换为:

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

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

1 个答案:

答案 0 :(得分:6)

这取决于编译器。这种方式一致:

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

    std::fstream(filename.c_str());
    // ...
}

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

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

    std::fstream(filename);
    // ...
}