我使用代码块写了一个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
答案 0 :(得分:2)
while(!inp.eof())
不是从文件中读取的好方法。特别是,如果由于某种原因无法读取其他而不是EOF,则条件永远不会为假,并且您的循环将永远运行。
编写这种循环的正确方法是:
while(inp >> word)
{
vec.push_back(word);
}
如果由于任何原因无法从输入流中读取inp >> word
,word
将评估为false。
如果没有更多详细信息,我无法确定这是你的问题,但它不会受到伤害。
答案 1 :(得分:1)
至少有一个问题,你在循环条件中使用eof
,你应该这样修改:
while( inp >> word)
{
vec.push_back(word);
}
此前一个主题涵盖Why is iostream::eof inside a loop condition considered wrong?。
的原因