在有限元研发平台FEMRP的编写和使用中都涉及到数据文件的输入和输出.文件名和路径的确定是需要考虑的问题之一.无论是测试程序产生的临时数据文件,还是计算过程和结果文件,我们都希望它们的文件名都尽量一致,只在后缀上有所区别,或在主文件名上增加一些字符.这样相关的文件名相似,便于管理和使用.而且,这些文件都应该与数据文件同属一个路径.FEMRP中通过一个函数SetDataName从数据文件名分解出路径,文件名,扩展名,由这些字符串构成一个结构FileName. FEMRP通过对FileName的操作,即可按我们的要求生成各类数据文件名,
FileName的定义如下:
typedef struct FILE_NAME{ string DataFile; //数据文件全名 string DataFilePath; //路径 string RealFileName; //数据文件名 string PreName; //路径+数据文件名 string Ext; //扩展名 } FileName; |
SetDataName函数:
|
FileName SetDataName( const string& totalfilename ) { FileName res;
res.DataFile = totalfilename;
int len = totalfilename.length(); int dotpose = totalfilename.find_last_of('.'); res.Ext = totalfilename.substr(dotpose+1,len-dotpose-1); int stickpose = totalfilename.find_last_of('\\'); res.DataFilePath = totalfilename.substr(0,stickpose+1); res.RealFileName = totalfilename.substr(stickpose+1,dotpose-stickpose-1);
res.PreName.append(res.DataFilePath); res.PreName.append(res.RealFileName);
return res; } |
应用举例: 若一数据文件名为: c:\femrp\example\test1\test1.pmg,则经过分解后FileName结构各字符串值为:
filename = "c:\femrp\example\test1\test1.pmg";
FileName res = SetDataName( filename );
res.DataFile "c:\femrp\example\test1\some.pmg"
res.DataFilePath "c:\femrp\example\test1"
res.RealFileName "some"
res.PreName "c:\femrp\example\test1\some"
res.Ext "pmg"
如果想构造一个后缀为"txt"的数据文件,则:
string temp = res.PreName;
temp.append(".txt");
扩展名Ext用于判断文件类型,路径名DataFilePath用于确定数据文件位置.