在 gdb 中打印有关文件流对象的详细信息 - c++
我有一个函数,其签名如下:
void someFunc(ifstream ifile) {
该函数嵌入在代码深处。当我使用 ddd 调试此代码时,如何从 ifstream 对象获取文件名。尝试以下操作:p ifile
或
ptype ifile
导致大量信息被转储。有没有办法获取 ifile 是流的文件名?
谢谢,
斯里拉姆。
I have function whose signature is something like so:
void someFunc(ifstream ifile) {
This function is embedded deep within the code. When I am debugging this code with ddd, how can I get the name of the file from the ifstream object. Trying the following:p ifile
or
ptype ifile
leads to a mountain of information being dumped. Is there a way to get the filename that ifile is a stream to?
Thanks,
Sriram.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
决不。那是不可能的。
std::ifstream
不存储文件名,也不提供任何get 函数来获取文件名。因此,给定一个std::ifstream
类型的对象,您无法获取它。如果您确实需要知道函数内的文件名(并且无法更改函数签名),那么您可以维护一个全局查找表(或者最好是
std::map
)并在每次打开文件时添加一个条目,如下所示:No way. That's not possible.
std::ifstream
doesn't store the filename, neither does it provide any get function to get the filename. Thus, you cannot get it, given an object of typestd::ifstream
.If you really need to know the filename inside the function (and cannot change the function signature), then you can maintain a global lookup table (or preferably
std::map
) and add an entry whenever you open a file, something like this: