读书人

语句位置的不同导致的异常

发布时间: 2013-06-26 14:29:32 作者: rapoo

语句位置的不同导致的错误?

while(getline(input,line))
{
istringstream stream(line);
string word;
bool firstword=true;
while(stream>>word)
{
map<string,string>::const_iterator map_it=trans_map.find(word);
if(map_it!=trans_map.end())
word=map_it->second; //运行成功
if(firstword)
firstword=false;
else cout<<" ";
// word=map_it->second; //运行产生错误
cout<<word;
}
cout<<endl;
}

我不明白,中间的firstword对map_it应该没有影响吧,为什么会导致不同的结果呢? c++
[解决办法]
有影响的
你的if else语句最好用 { }分开,例如:
if (...)
{
......
}
else
{
......
}
[解决办法]
关于你的代码的说明:

if(map_it!=trans_map.end())
word=map_it->second; //运行成功 //说明,这条语句执行的条件,前面if条件成立
if(firstword)
firstword=false;
else cout<<" ";
// word=map_it->second; //运行产生错误//不管if(map_it!=trans_map.end()) 是否成立都要执行,肯定要最后出界错误

读书人网 >C++ Builder

热点推荐