C++经典代码之:找出全部str1和str2之间的字符串【子函数】f_get_mid(string strMain, string str1, string str2)
#include <iostream>
#include <string>
#include <algorithm> //std::transform
using namespace std;

string f_get_mid(string strMain, string str1, string str2, int intCompare)
{ // 得到主字符串中间文字的函数
	string strMid = ""; // 返回主字符串初始化为空
	long lngStr1Len = str1.length(), lngStr2Len = str2.length();
	long lngPos1 = 0, lngPos2 = 0; // 找到的str1 str2 的位置
	long lngLen1 = str1.length();  // 结果 5。length不含\0。先算出来,免得后面再算
	long lngLen2 = str2.length();  // 结果 6。

	string strMidOld = strMain; // 主字符串原样保存到strMidOldstring strMidOld = strMain;
	if (intCompare == 1)
	{ // 如果是1就对str1 str2不管大小写
		transform(strMain.begin(), strMain.end(), strMain.begin(), ::tolower);
		// 对主字符串小写
	}

	lngPos1 = strMain.find(str1, 0); // 先找str1有没有

	while (lngPos1 != -1)
	{													 // 找到str1了
		lngPos2 = strMain.find(str2, lngPos1 + lngLen1); // 再找str2有没有

		if (lngPos2 != -1)
		{ // 找到str2了
			if (intCompare == 1)
			{ // 如果是1就对str1 str2不管大小写,需要原样输出相同位置的主字符串的字符
				strMid += strMidOld.substr((lngPos1 + lngLen1), (lngPos2 - lngPos1 - lngLen1));
			}
			else
			{
				strMid += strMain.substr((lngPos1 + lngLen1), (lngPos2 - lngPos1 - lngLen1));
			}
			strMid += " "; // 加个空格隔开结果

			lngPos1 = strMain.find(str1, lngPos2 + lngLen2); // 设置指针到下一个位置开始
		}
	}

	return strMid;
}

int main()
{
	string strMain = "<Title>百事知道</title><a target=_blank style='font-weight:bold;color:red;' title='可点击' href=http://BaiShiZhiDao.com>@网址</a>";
	strMain += "<a target=_blank style='font-weight:bold;color:red;' title='可点击' href=http://www.baishizhidao.com>www网址</a>";
	strMain += "ABC<div>你好。Hello</div>!<Div>I</div> <dIv>am</div> <diV>Billy</Div>.";

	string str1 = "<div>";	// 建议用小写
	string str2 = "</div>"; // 建议用小写

	cout << "严格比较str1和str2:" << f_get_mid(strMain, str1, str2, 0) << "\n\n";
	cout << "忽略str1和str2大小写:" << f_get_mid(strMain, str1, str2, 1) << "\n\n";
	cout << "---------------------------------\n\n";

	cout << "<title>到</title>之间的内容:" << f_get_mid(strMain, "<title>", "</title>", 1) << "\n\n";
	cout << "<a target=_blank style='font-weight:bold;color:red;' title='可点击' href=到>之间的内容:" << f_get_mid(strMain, "<a target=_blank style='font-weight:bold;color:red;' title='可点击' href=", ">", 1) << "\n\n";

	system("pause");
	return 0;
}
运行结果:
严格比较str1和str2:你好。Hello

忽略str1和str2大小写:你好。Hello I am Billy

---------------------------------

<title>到</title>之间的内容:百事知道

<a href=到>之间的内容:http://BaiShiZhiDao.com http://www.baishizhidao.com
创作不易,支持我们就点击下方广告用优惠券买东西吧 :)

百事知道 版权所有,禁止转载,除非给出本网网址。