语句位置的不同导致的异常
语句位置的不同导致的错误?while(getline(input,line)){istringstream stream(line)string wordbool fir
语句位置的不同导致的错误?
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()) 是否成立都要执行,肯定要最后出界错误