程序错误地从文本文件中读取了信息,似乎是从左到右,然后是从右到左

时间:2019-05-22 08:21:13

标签: c++ fstream

我正在尝试阅读有关A.一个单词和B.所述单词的出现频率的信息。当函数读取信息时,第一个调用从左(Word)到右(频率)读取信息,然后下一个是右(频率)到左(Word)读取信息。我认为这是由于我的格式。我的假设是跳过这个词。

Startup.cs

dicFile是其输出到的文本文件。 s.key是单词,s.wordcount是整数。

文本文件的格式为:

会计3

Apple 1

面包1

....

阅读
dicFile << s.key << " " << s.wordCount << endl;

我猜是因为无法处理“会计”,它在atoi崩溃了。

1 个答案:

答案 0 :(得分:1)

这是因为它无法处理“ Apple”。

首先,while (dictionaryFile >> word)读取“会计”,然后

dictionaryFile >> word >> freq;

将“ 3”读入word,将“ Apple”读入freq

您应该做的是

while (dictionaryFile >> word >> freq) {
    int frequ = stoi(freq);
    // ...

或者您可以删除一堆变量改组并直接读入您的“项目”:

while (dictionaryFile >> newItem.key >> newItem.wordCount) {
    tree.AVL_Insert(newItem);
}