我有功能的签名是像这样:打印的详细信息 - C++
void someFunc(ifstream ifile) {
此功能内嵌代码深处。当我使用ddd调试此代码时,如何从ifstream对象获取文件的名称。尝试以下操作:
p ifile
或
ptype ifile
导致信息山被弃置。有没有办法获得ifile是一个流的文件名?
感谢,
斯利拉姆。
我有功能的签名是像这样:打印的详细信息 - C++
void someFunc(ifstream ifile) {
此功能内嵌代码深处。当我使用ddd调试此代码时,如何从ifstream对象获取文件的名称。尝试以下操作:
p ifile
或
ptype ifile
导致信息山被弃置。有没有办法获得ifile是一个流的文件名?
感谢,
斯利拉姆。
有没有办法让这名IFILE是流?
没办法。这是不可能的。
std::ifstream
不存储文件名,也没有提供任何获取函数来获取文件名。因此,给定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];
//...
}
什么是'ptype'? – Nawaz 2011-04-19 12:41:50
@Nawaz:ptype在ddd中打印变量的类型。所以,对于双重a,ptype a提供了双倍。 – Sriram 2011-04-19 13:38:28