我有以下代码可以找到不包含字母的字符串。不应识别mynumber123之类的情况, numberFinder()应返回 false,应识别123之类的情况, numberFinder()应返回true以及数字的开始索引。
构造函数:
CaddressParser::CaddressParser(string fileName) //constructor
{
m_fileName=fileName;
int length=getLength(m_fileName.c_str());
m_text =fileReader(m_fileName.c_str());
m_length=length;
}
它初始化一个m_text
包含文本文件内容的字符串
在实现的某个地方,我遇到了以下代码:
for (i;i<m_length;i++)
{
bool UpperCaseBeforeNoFound=false;
if(this->numberFinder (i).second)
{
//do some calculations.
}
}
numberFinder 函数实现如下:
pair <int,bool> CaddressParser::numberFinder(int counter)
{
bool noFound=isdigit(m_text[counter]); //number found? -> true
if(noFound)
{
int end=HouseNoDigits(counter);
if(((counter-1)>=0) && ((counter +end-1) <m_length))
{
if((!(isalpha(m_text[counter-1]))) && (!isalpha(m_text[counter+end-1])))
{
return make_pair(counter,noFound); //return index if true
}
}
}
else return make_pair(0,noFound);
}
现在问题在于包含以下文本的文本文件“ he23 Market street London Q12 H13 ”。我收到标题中提到的错误,调试器将我带到其中包含的行:
if(this->numberFinder (i).second)
我无法弄清楚为什么会这样。请帮我弄清楚。