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

| 我有其签名是这样的功能:
void someFunc(ifstream ifile) { 
此功能嵌入在代码的深处。当我使用ddd调试此代码时,如何从ifstream对象获取文件名。尝试以下方法:
p ifile
ptype ifile  
导致大量信息被丢弃。有没有办法获取ifile是流的文件名? 谢谢, 斯里拉姆
已邀请:
有没有办法获取ifile是流的文件名? 没门。那是不可能的。
std::ifstream
不存储文件名,也没有提供任何获取函数来获取文件名。因此,给定类型为“ 3”的对象,您将无法获得它。 如果您确实需要了解函数内部的文件名(并且不能更改函数签名),则可以维护全局查找表(最好是
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];
       //...
}

要回复问题请先登录注册