去除文本中包含指定字符的行

這個工具通常用來去除小說或者字幕中的廣告。

比如以下一段文本:

BSTR實際上就是一個COM字符串,標準BSTR是一個有長度前綴和null結束符的OLECHAR數組。BSTR的前4字節是一個表示字符串長度的前綴。BSTR長度域的值是字符串的字節數,並且不包括0結束符

#include <comutil.h>
#include  <string>
#pragma comment(lib, "comsuppw.lib")
//BSTR轉string
BSTR bstrText = ::SysAllocString(L"Test");
string str = _com_util::ConvertBSTRToString(bstrText);  
SysFreeString(bstrText);  
//BSTR轉char*
BSTR bstrText = ::SysAllocString(L"Test");
char* lpszText = _com_util::ConvertBSTRToString(bstrText);  
SysFreeString(bstrText); 
delete[] lpszText;
//char*轉BSTR
char* lpszText = "Test"; 
BSTR bstrText = _com_util::ConvertStringToBSTR(lpszText); 
//string轉BSTR
string str = "Test"; 
BSTR bstrText = _com_util::ConvertStringToBSTR(str); 

指定字符爲“Str”,則包含Str的行都要去掉。

 工具界面如圖:

 核心代碼,很簡單,判斷字符串即可:

int CDllTestorDlg::ProceeOneFile(const _tstring& stFilePath, const _tstring& stToLookUp,const _tstring& stDstDir)
{
	std::vector<_tstring> vContent, vContentNew;
	size_t nLines = CStdFile::ParseTXTFile(stFilePath, vContent);
	for (size_t j = 0; j < nLines; ++j)
	{
		_tstring stLine = vContent[j];

		if ((m_cfg.bDelBlankLine && stLine.size() != 0 || !m_cfg.bDelBlankLine) && stLine.find(stToLookUp) == _tstring::npos)
		{
			vContentNew.push_back(stLine + _T('\n'));
		}
	}

	_tstring stSavePath = stDstDir + CStdStr::GetNameOfFile(stFilePath);
	CStdFile::SaveTXTFile(stSavePath, vContentNew);

	return 0;
}

歡迎交流。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章