代码如下,代码功能就是将一串;号隔开的string提取出来:
MarkNum为已经得到的;号个数
pMark = 0;
for(i=0;i<=MarkNum;i++)
{
pMark = titleString.Find(';',pMark);
if(-1 == pMark)
{
m_HideString.Add(titleString);
}
else
{
m_HideString.Add(titleString.Left(pMark));
titleString = titleString.Right(titleString.GetLength() - pMark -1);
}
}当字串如下时返回正确:
aa;bbbb;ccccc
而当字串中前面的string长度比后面的长时,返回出错,
ccccc;aa;bbbb
返回取得第一个string是 ccccc,之后titleString 重置为aa;bbbb
而对aa;bbbb
pMark = titleString.Find(';',pMark); 返回pMark = -1 找不到第二个;号
请问什么地方出错了。当然我能用其他方法譬如不重置titleString,而改变pMark的方法来取得;位置。只是对上述代码出现的问题不理解。
MarkNum为已经得到的;号个数
pMark = 0;
for(i=0;i<=MarkNum;i++)
{
pMark = titleString.Find(';',pMark);
if(-1 == pMark)
{
m_HideString.Add(titleString);
}
else
{
m_HideString.Add(titleString.Left(pMark));
titleString = titleString.Right(titleString.GetLength() - pMark -1);
}
}当字串如下时返回正确:
aa;bbbb;ccccc
而当字串中前面的string长度比后面的长时,返回出错,
ccccc;aa;bbbb
返回取得第一个string是 ccccc,之后titleString 重置为aa;bbbb
而对aa;bbbb
pMark = titleString.Find(';',pMark); 返回pMark = -1 找不到第二个;号
请问什么地方出错了。当然我能用其他方法譬如不重置titleString,而改变pMark的方法来取得;位置。只是对上述代码出现的问题不理解。
iEnd = aa.Find(',',iStart);
server = aa.Mid(iStart, iEnd-iStart);
iStart = iEnd+1;
iEnd = aa.Find(',',iStart);
dbname = aa.Mid(iStart, iEnd-iStart);
iStart = iEnd+1;
iEnd = aa.Find(',',iStart);
pwd = aa.Mid(iStart, iEnd-iStart);
iStart = iEnd+1;
iEnd = aa.GetLength();
user = aa.Mid(iStart, iEnd-iStart);
结果:
server = liuyong
dbname = catvgis
user = sa
psw = sa