一个关于string的定义位置的问题
下面是我写过的一个函数,string strPinyin的定义如果拿到for循环之前,程序有时就会死掉,放到for循环里面就不会死掉,这是怎么回事?
void CFuzzy::ReplaceFuzzyShengMu(char* pPinyin, int nStartCount)
{
for (int i = nStartCount; i < m_vecReplacedPos.size(); ++i)
{
string strPinyin = pPinyin; //这个string的定义如果拿到for循环的外边,程序就会经常莫名其妙的死掉
char& ch = strPinyin[m_vecReplacedPos[i]];
if (ch == 'l ')
{
for (int time = 0; time < 2; ++time)
{
strPinyin = pPinyin;
ch = strPinyin[m_vecReplacedPos[i]];
ch = (time == 0) ? 'n ' : 'r ';
m_vecFuzzyPinyin.push_back(strPinyin);
ReplaceFuzzyShengMu(strPinyin, i+1);
}
}
else
{
ch = strPinyin[m_vecReplacedPos[i]];
ReplaceChar(ch);
m_vecFuzzyPinyin.push_back(strPinyin);
ReplaceFuzzyShengMu(strPinyin, i+1);
}
}
}
[解决办法]
ch = strPinyin[m_vecReplacedPos[i]];
这个语句为什么要这么多??
思路有些乱······
[解决办法]
把char& ch = strPinyin[m_vecReplacedPos[i]];改为
char ch = strPinyin[m_vecReplacedPos[i]];看看