C++获得fstream类对象所打开的文件名
时间: 2023-11-14 07:29:40 浏览: 106
c++读取文件中的文件名
要获得一个 `fstream` 类对象所打开的文件名,可以使用 `std::fstream` 类的成员函数 `std::fstream::open()` 和 `std::fstream::is_open()` 来实现。
首先,调用 `std::fstream::open()` 成员函数打开文件,然后调用 `std::fstream::is_open()` 函数检查文件是否成功打开。如果文件成功打开,可以使用 `std::fstream::rdbuf()` 函数来获取 `std::filebuf` 对象的指针,然后使用 `std::filebuf::pubfilename()` 函数来获取文件名。
以下是示例代码:
```c++
#include <iostream>
#include <fstream>
int main() {
std::fstream file("test.txt", std::ios::in);
if (file.is_open()) {
std::filebuf* pbuf = file.rdbuf();
std::cout << "File name: " << pbuf->pubfilename() << std::endl;
file.close();
} else {
std::cerr << "Failed to open file." << std::endl;
}
return 0;
}
```
注意,`std::filebuf::pubfilename()` 函数返回的文件名是 `const char*` 类型。如果需要将其转换为其他类型,可以使用相应的类型转换函数。
阅读全文