首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个关于string的定义位置的有关问题

2012-04-03 
一个关于string的定义位置的问题下面是我写过的一个函数,stringstrPinyin的定义如果拿到for循环之前,程序

一个关于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]];看看

热点排行