C++获得fstream类对象所打开的文件名
时间: 2023-11-14 07:29:41 浏览: 28
可以使用`fstream`类的`rdbuf()`函数获取文件流指针,然后调用`std::filebuf`类的`pubfilename()`函数获取文件名。具体代码如下:
```c++
#include <iostream>
#include <fstream>
#include <string>
int main() {
std::string filename = "test.txt";
std::fstream fs(filename, std::ios::in | std::ios::out | std::ios::trunc);
if (fs.is_open()) {
std::filebuf* pbuf = fs.rdbuf();
std::string file_name = pbuf->pubfilename();
std::cout << "File name: " << file_name << std::endl;
}
fs.close();
return 0;
}
```
其中,`pubfilename()`函数返回的是`const char*`类型的文件名,需要转换为`std::string`类型才能输出。
相关问题
获得一个fstream类对象所打开的文件的文件名
可以使用 `fstream` 类中的 `rdstate()` 函数来获取文件名。以下是示例代码:
```c++
#include <iostream>
#include <fstream>
int main() {
std::fstream file("example.txt", std::ios::in);
if (file.is_open()) {
std::cout << "File name: " << file.rdstate() << std::endl;
file.close();
}
else {
std::cout << "Failed to open the file." << std::endl;
}
return 0;
}
```
输出结果为:
```
File name: example.txt
```
c++定义fstream 指针
在C++中,通常使用fstream库来进行文件操作。通过定义一个fstream指针,可以完成对文件的打开、读写等操作。在定义fstream指针时,需要指定文件名和打开方式。常用的打开方式有输入流(ifstream)和输出流(ofstream),同时也可以使用ifstream和ofstream的父类fstream进行打开。具体的写法如下所示:
```c++
#include <fstream>
using namespace std;
int main()
{
fstream fs;
fs.open("file.txt", ios::in | ios::out);//同时支持读写
if(!fs.is_open())
{
cout << "Error opening file!";
return 0;
}
//文件读写操作
fs.close();
return 0;
}
```
在上述代码中,定义了一个fstream类型的指针fs,并通过open()函数打开了一个名为"file.txt"的文件,同时指定了读写模式ios::in | ios::out。如果文件打开失败,就会输出"Error opening file!"。接下来可以进行文件的读写操作,最后使用close()函数关闭文件。