String __fastcall EraseFontInfoInRTF(String sRTF)
{
int iFontPos = sRTF.Pos(_T("{\\fonttbl"));
while (iFontPos > 0)
{
vector<String> vtStack;
int iCurrPos = iFontPos;
vtStack.push_back(sRTF[iCurrPos]);
while (vtStack.size())
{
iCurrPos++;
if (iCurrPos <= sRTF.Length())
{
if (sRTF[iCurrPos] == '{')
{
vtStack.push_back(sRTF[iCurrPos]);
}
else if (sRTF[iCurrPos] == '}')
{
vtStack.pop_back();
}
}
else // 非法格式
{
iFontPos = -1;
break;
}
}
if (vtStack.empty())
{
String sPrev = sRTF.SubString(1, iFontPos - 1);
String sLast = sRTF.SubString(iCurrPos + 1, sRTF.Length() - iCurrPos);
sRTF = sPrev + sLast;
iFontPos = sRTF.Pos("{\\fonttbl");
}
}
return sRTF;
}