0
huffmanFile.open("code.txt");

while(huffmanFile.peek() != EOF)
{
    cin >> letters[c] >> numbers[c];
    c++;
}

huffmanFile.close();

输入文件:A 23 B 35 C 47 D 0 E 12 F 11 G 92 H 18 I 17

执行此操作后,我尝试从我的 main 函数中输出 c 并且它不会退出 while 循环。我试过调试无济于事。我已经将它与我编写的许多其他程序进行了比较,但仍然没有运气。

4

2 回答 2

2

假设huffmanFile是一个istream对象类型,你可以尝试使用这个变体:

while (huffmanFile >> letters[c] >> numbers[c]) {
    ++c;
}

说明:如果已到达流的末尾,则istream::operator >>设置其内部标志。eofbit它还返回*this,允许我们执行类似的读取序列cin >> a >> b >> c。之后,istream通过while子句测试对象,即bool operator()调用内部,true如果eofbit标志已设置,则返回,false否则返回。

于 2013-04-07T21:10:43.850 回答
1

cin是标准输入流,它通常从键盘输入。您需要改为从文件中读取输入。

循环永远不会终止,因为文件读取位置永远不会前进。

于 2013-04-07T21:08:05.810 回答