wxWidget文件路径处理及字符串拆分

好久没有发文章了,发点福利放点代码吧,废话不多说,直接上代码:

头文件:

#ifndef WXWIDGETHELPER_H
#define WXWIDGETHELPER_H
#pragma once
#include <wx/filename.h>
#include <wx/arrstr.h>

/**
*  @brief		获取文件路径.
*  @param sFilePath			文件路径.
*  @retrive	wxString		文件路径.
*  @remarks
   Use like this:
*  @code
	 wxString s = GetFilePath("temp\\DEM.tif");
	 //结果为:"temp
*  @endcode
*  @author		Zhengwen.Fu
*  @history		- 1.Created by Zhengwen.Fu on 4th Feb,2015.  
*/
wxString GetFilePath(wxString sFilePath);

/**
*  @brief		获取文件名,不带扩展名.
*  @param sFilePath			文件路径.
*  @retrive	wxString		文件名.
*  @remarks
   Use like this:
*  @code
	 wxString s = GetFileName("temp\\DEM.tif");
	 //结果为:DEM
*  @endcode
*  @author		Zhengwen.Fu
*  @history		- 1.Created by Zhengwen.Fu on 4th Feb,2015.  
*/
wxString GetFileName(wxString sFilePath);

/**
*  @brief		获取完整的文件名.
*  @param sFilePath			文件路径.
*  @retrive	wxString		文件名.
*  @remarks
   Use like this:
*  @code
	 wxString s = GetFullName("temp\\DEM.tif");
	 //结果为:DEM.tif
*  @endcode
*  @author		Zhengwen.Fu
*  @history		- 1.Created by Zhengwen.Fu on 4th Feb,2015.  
*/
wxString GetFullName(wxString sFilePath);

/**
*  @brief		使用原始路径,拼接新的文件名生成新的文件路径.
*  @param sFilePath			文件路径.
*  @param sAppendName		新文件名.
*  @retrive	wxString		新文件路径.
*  @remarks
   Use like this:
*  @code
	 wxString s = GetNewFullPath("temp\\DEM.tif","Avg.tif");
	 //结果为:temp\\Avg.tif
*  @endcode
*  @author		Zhengwen.Fu
*  @history		- 1.Created by Zhengwen.Fu on 4th Feb,2015.  
*/
wxString GetNewFullPath(wxString sFilePath,wxString sNewFileName);


/**
*  @brief		使用原始路径及文件名,拼接新的字符串生成新的文件路径.
*  @param sFilePath			文件路径.
*  @param sAppendName		需要附加的文件名.
*  @retrive	wxString		新文件路径.
*  @remarks
   Use like this:
*  @code
	 wxString s = GetNewFullPath2("temp\\DEM.tif","_Avg.tif");
	 //结果为:temp\\DEM_Avg.tif
*  @endcode
*  @author		Zhengwen.Fu
*  @history		- 1.Created by Zhengwen.Fu on 4th Feb,2015.  
*/
wxString GetNewFullPath2(wxString sFilePath,wxString sAppendName);

/**
*  @brief		分割字符串.
*  @param pString		[in]待分割字符串.
*  @param cSpliter		[in]分隔字符.
*  @remarks
   Use like this:
*  @code
	wxArrayString arry = wxSplitString("a,b,c,d",',');
	size_t count = arry.GetCount();
	wxPrintf(_T("\arrysize = %u\n"), count);
	for ( size_t arg = 0; arg < count; arg++ )
	{
		wxPrintf(_T("\tarry[%u] = %s\n"), arg, arry[arg].c_str());
	}
*  @endcode
*  @author		Zhengwen.Fu
*  @history		- 1.Created by Zhengwen.Fu on 25th Mar,2015.  
*/
wxArrayString wxSplitString(const wxChar *pString,const wxChar cSpliter);


/**
*  @brief		分割字符串.
*  @param pString		[in]待分割字符串.
*  @param pSpliter		[in]分隔字符串.
*  @remarks
   Use like this:
*  @code
	wxArrayString arry = wxSplitString(",,a,b,,,c,,,d,adsdsd,sdfwee,dddd,",",");
	size_t count = arry.GetCount();
	wxPrintf(_T("\arrysize = %u\n"), count);
	for ( size_t arg = 0; arg < count; arg++ )
	{
		wxPrintf(_T("\tarry[%u] = %s\n"), arg, arry[arg].c_str());
	}
*  @endcode
*  @author		Zhengwen.Fu
*  @history		- 1.Created by Zhengwen.Fu on 25th Mar,2015.  
*/
wxArrayString wxSplitString(const wxChar *pString,const wxChar *pSpliter);

#endif
源文件:

#include "wxWidgetHelper.h"

wxString GetFilePath(wxString sFilePath)
{
	wxFileName fName(sFilePath);
	return fName.GetPath();
}

wxString GetFileName(wxString sFilePath)
{
	wxFileName fName(sFilePath);
	return fName.GetName();
}

wxString GetFullName(wxString sFilePath)
{
	wxFileName fName(sFilePath);
	return fName.GetFullName();
}

wxString GetNewFullPath(wxString sFilePath,wxString sNewFileName)
{
	wxFileName fName(sFilePath);
	return (fName.GetPath()+"\\"+sNewFileName);
}

wxString GetNewFullPath2(wxString sFilePath,wxString sAppendName)
{
	wxFileName fName(sFilePath);
	return (fName.GetPath()+"\\"+fName.GetName()+sAppendName);
}


wxArrayString wxSplitString(const wxChar *p,const wxChar cSpliter)
{
	wxArrayString arry;
	wxString str;
	str.reserve(1024);

	while (true)
	{
		while(*p==cSpliter)
			p++;

		if(*p == _T('\0'))
			break;

		for (str.Clear();;p++)
		{
			if(*p==cSpliter || *p == _T('\0'))
				break;

			str += *p;
		}
		arry.push_back(str);
	}
	return arry;
}


wxArrayString wxSplitString(const wxChar *pString,const wxChar *pSpliter)
{
	wxArrayString arry;
	wxString s(pString);

	while (true)
	{
		int pos = s.Find(pSpliter);
		if (pos == 0)
		{
			s = s.substr(1);
			continue;
		}

		if(pos == wxString::npos )
		{
			if(s.Length() > 0) 
				arry.push_back(s.Trim());
			break;
		}

		arry.push_back(s.substr(0,pos));
		s = s.substr(pos+1);
	}
	return arry;
}
OK了,具体用法在注释中有。


猜你喜欢

转载自blog.csdn.net/giselite/article/details/44652603