1. 程式人生 > >在二進位制檔案中查詢關鍵字

在二進位制檔案中查詢關鍵字

如果找的是二進位制:
string::size_type FindBinary(const string src_file, const char* keyword, const unsigned int nsize)
{
	fstream f(src_file.c_str(), ios::in | ios::out | ios::binary);

	if (!f.good())
		return string::npos;

	stringstream ss;
	ss << f.rdbuf();
	f.close();

	string content(ss.str());

	for (string::size_type i=0; i<content.length(); i++)
	{
		for (string::size_type j=0; j<nsize; j++)
		{
			if (content.at(i+j) != keyword[j])
				break;

			if (nsize == j + 1)
				return i;	// oh yeah, find it
		}
	}

	return string::npos;
}

如果找的是文字:

string::size_type FindKeyword(const string src_file, const string keyword)
{
	fstream f(src_file.c_str(), ios::in | ios::out | ios::binary);
	
	if (!f.good())
		return string::npos;

	stringstream ss;
	ss << f.rdbuf();
	f.close();

	string content(ss.str());
	return content.find(keyword);
}