为什么会进入死循环呢?该如何处理

为什么会进入死循环呢?
#pragma   warning   (   disable:   4786   )
#include <iostream>
#include <string>
#include <fstream>
#include <map>

using   namespace   std;

map <string,double>   probabilityMap;

//void   InputProbability()
int   main()
{
ofstream   outputProbability;
string   outputProbabilityFile( "copyOutputProbability.txt ");


ifstream   inputProbability;
string   inputProbabilityFile( "outProbabilityFile.txt ");

inputProbability.open   (   inputProbabilityFile.c_str   ());

        if   (   !inputProbability   )
{
cerr < < "error:   unable   to   open   the   input   file! " < <endl;
return   -1;
}
else
{
while   (   !inputProbability.eof   ()   )  
{
string   word;
if   (   inputProbability   > >   word   )
{ //probabilityMap[word]++;
double   num;
if   (   inputProbability   > >   num   )
{
probabilityMap[word]   =   num   ;
}
}
}
// while   (   )
inputProbability.close();
}


outputProbability.open(outputProbabilityFile.c_str   ());
if   (   !outputProbability   )
{
cerr < < "unable   to   open   output   file! " < <endl;
return   -2;
}

typedef   map <string,   double> ::iterator   typeIter;
for   (   typeIter   it=probabilityMap.begin   ();   it!=probabilityMap.end   ();   ++it   )
{
outputProbability   < <   (*it).first   < <   "         "   < <   endl;//(*it).second < <endl;
}
outputProbability.close();

return   0;
}

------解决方案--------------------
没看出来
UP
------解决方案--------------------
这段有问题:
while ( !inputProbability.eof () )
{
string word;
if ( inputProbability > > word )
{ //当文件中的格式不是 string double的时候,就会出错。
//出错时,这里就设置了标志位,就导致一直死循环;
//你的outProbabilityFile.txt文件格式
//肯定不是字符串 浮点数 .....的格式
double num;
if ( inputProbability > > num )
{
probabilityMap[word] = num ;
}
}
}
inputProbability.close();
}

可以改成如下就不会死循环了,只是个变通的办法:

while ( !inputProbability.eof () )
{
string word;
if(inputProbability.fail())
inputProbability.clear();
if ( inputProbability > > word )
{ //probabilityMap[word]++;
double num;
if ( inputProbability > > num )
{
probabilityMap[word] = num ;
}

}
}
// while ( )
inputProbability.close();
}
------解决方案--------------------
没问题。
outProbabilityFile
 本 23
  传真 14
  回复 32
  解说 12
  如果 10
  商 20
  商品 40
  市 21
  我 18
  我们 14
  一 14