此代码在我的计算机上编译并运行但不在服务器上运行

时间:2013-03-15 00:54:10

标签: c++ unix syntax compiler-construction

我使用代码块写了一个C ++程序,在最后一分钟我决定使用empress,我们用来做实验室的学校服务器,结果证明它不起作用!那是什么意思?我的节目不对吗?或者它可能是编译器问题?我通常使用linux ubuntu使用代码块来编程。我使用Windows测试程序,它也工作。为什么不在服务器上运行?

以下是我认为导致问题的代码:

bool dictionary::insertWordsIntoDict(string fileName)
{

   ifstream inp;
   string word;
   vector<string> vec;
   inp.open(fileName.data());

   if(inp.good())
   {

     while(!inp.eof())
     {
      inp>>word;
      vec.push_back(word);

     }
    string temp;
    string temp2= "#.txt";

     for(int i=0 ; i<vec.size() ; i++)
     {
          temp = vec[i];
          temp2[0] = tolower(temp[0]);
          cout<<temp<<endl;
          AddWord(temp.data(), temp2);
     }

   }//end of if statement

  else
  {
     cout<<":(  File does not exist! "<<endl;
     return failure;
  }

}// end of function insert words

2 个答案:

答案 0 :(得分:2)

while(!inp.eof())不是从文件中读取的好方法。特别是,如果由于某种原因无法读取其他而不是EOF,则条件永远不会为假,并且您的循环将永远运行。

编写这种循环的正确方法是:

while(inp >> word)
 {
  vec.push_back(word);
 }

如果由于任何原因无法从输入流中读取inp >> wordword将评估为false。

如果没有更多详细信息,我无法确定这是你的问题,但它不会受到伤害。

答案 1 :(得分:1)

至少有一个问题,你在循环条件中使用eof,你应该这样修改:

while( inp >> word)
 {
  vec.push_back(word);

 }

此前一个主题涵盖Why is iostream::eof inside a loop condition considered wrong?

的原因