gpt4 book ai didi

c++ - 在 gdb 中打印有关文件流对象的详细信息 - C++

转载 作者:行者123 更新时间:2023-11-30 04:34:52 25 4
gpt4 key购买 nike

我有一个函数,它的签名是这样的:

void someFunc(ifstream ifile) { 

此功能深嵌在代码中。当我用 ddd 调试这段代码时,如何从 ifstream 对象中获取文件名。尝试以下操作:
p ifile

ptype ifile  

导致大量信息被丢弃。有没有办法获取 ifile 流向的文件名?

谢谢,
斯里拉姆。

最佳答案

Is there a way to get the filename that ifile is a stream to?

没办法。这是不可能的。

std::ifstream 不存储文件名,也不提供任何 get 函数来获取文件名。因此,给定 std::ifstream 类型的对象,您无法获取它。


如果您确实需要知道函数内部的文件名(并且不能更改函数签名),那么您可以维护一个全局 查找表(或者最好是std::map) 并在您打开文件时添加一个条目,如下所示:

std::map<std::ifstream*, const char*> g_stream_file_pairs;

std::ifstream ifile("xyz/abc/filename.txt");
g_stream_file_pairs.insert(std::make_pair(&ifile, ""xyz/abc/filename.txt"));


void someFunc(std::ifstream & ifile)
{
const char* filename = g_stream_file_pairs[&ifile];
//...
}

关于c++ - 在 gdb 中打印有关文件流对象的详细信息 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5716463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com