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

Using a string as a file name with std::fstream.

本文关键字:std 文件名 fstream 字符串      更新时间:2023-10-16

我遇到了关于数据文件的问题,它告诉我们编写一个函数来做事。在所有其他问题中,我们处理固定文件名,例如"abc.txt",因此函数不会泛化。我想知道是否有一种方法可以让数据文件在语句中使用字符串变量:

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

并将其转换为:

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

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

这取决于编译器。这种方式可以始终如一地工作:

void do_something(std::string const &filename) {
    std::fstream(filename.c_str());
    // ...
}

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

void do_something(std::string const &filename) {
    std::fstream(filename);
    // ...
}