读书人

求教一个字符串的有关问题

发布时间: 2013-07-01 12:33:04 作者: rapoo

求教一个字符串的问题。

char strBuff[1025] = {0}; 
CString strHtml;
while ((pFile->Read((void*)strBuff, 1024)) > 0)
{
strHtml += strBuff;
}
int rcS = strHtml.Find(_T(" "));
int rcE = strHtml.Find(_T(" "));
m_StrutsTokenVaule = strHtml.Mid(...);



strHtml是HTML代码,里面有这样一个控件<input type="hidden" name="struts.token" value="EW2DH7SILHZSU3FK3JAEBSOX2JF4G4P1" />
我的目的就是截取这个控件的value值。我的双引号转义估计有问题,程序截取的值为空。请高手帮忙填一下空,谢谢啦.
[解决办法]
int iFind = str.find("value");
str = str.right(str.getlenth()-str.find('"',ifind));
str = str.left(str.find('"'));
[解决办法]
VC中操作XML建议使用CMarkup类

具体例子可以参考:
http://www.codeproject.com/Articles/982/XML-class-for-processing-and-building-simple-XML-d

[解决办法]
int rcS = strHtml.Find(_T("name=\"struts.token\" value=\""));
strHtml = strHtml.Right(strHtml.GetLength()-rcS+27);
strHtml = strHtml.Left(strHtml.ReversFind(_T("\"")));
[解决办法]
引用:
Quote: 引用:

str = str.left(str.find('\"'));

感谢回答。不过截取到的还是空的。我帖一点代码吧。
pFile->AddRequestHeaders(_T("Connection:Keep-Alive"));
pFile->SendRequest();
DWORD dwStatusCode;
pFile-> QueryInfoStatusCode(dwStatusCode);
if (dwStatusCode == HTTP_STATUS_OK)
{
CString strStatus(_T(""));
pFile->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF, strStatus);
int begin = strStatus.Find(_T("Set-Cookie:"),0) + CString("Set-Cookie:").GetLength() + 1;
int end = strStatus.Find(_T(";"),begin+1);
m_LoginCookie = strStatus.Mid(begin,end-begin);
char strBuff[2049] = {0};


CString strHtml;
while ((pFile->Read((void*)strBuff, 2048)) > 0)
{
strHtml += strBuff;
memset(strBuff,0,2049); //缓冲区清0
}
int rcS = strHtml.Find(_T("name=\"struts.token\" value=\""));
strHtml = strHtml.Right(strHtml.GetLength()-rcS+27);
strHtml = strHtml.Left(strHtml.Find(_T("\"")));
m_StrutsTokenVaule = strHtml;
}


你最好单步调试一步一步来看看strHtml值的变化,做应该是这么做的,看看到底是哪出的问题
[解决办法]
是否是字符集的问题?用
USES_CONVERSION;
char * pFileName = T2A(你的CString);
TRACE(pFileName);//调试下

读书人网 >VC/MFC

热点推荐