c ++ netbeans中的“未知解析器错误”

时间:2015-04-22 20:32:06

标签: c++ netbeans

提前抱歉,我发布了一张图片,但我还没有代表:(第1行的错误说“未知的解析器错误”重复超过四行,并且从ReadFile类行开始几乎每行都有一个错误说“意外令牌”。我已经包含了文件夹中的所有自定义头文件,方法是右键单击项目下的“header”并添加包含它们的文件夹,或者右键单击项目名称本身并在那里添加文件夹。还包括包含标题的私有片段的私人文件夹。任何人有任何想法吗?这是斯坦福的免费讲座集,你必须下载并安装他们的自定义标题..教师使用Visual c + +,但那不应该意味着我不能使用Netbeans的文件,他们只是.h文件..?

#include "genlib.h"
#include <iostream>
#include <fstream>
#include "map.h"
#include "random.h"
#include "set.h"
using namespace std;

void ReadFile(ifstream &in, Map<int> &m)
{
    while (true) {
        string word;
        in >> word;
        if (in.fail()) break;
        if (m.containsKey(word)) 
            m[word]++;
        else
            m[word] = 1;
    }
    Map<int>::Iterator itr = m.iterator();
    string max;
    int maxCount = 0;
    while (itr.hasNext()) {
        string key = itr.next();
        if (m[key] > maxCount) {
            max = key;
            maxCount = m[key];
        }
    }
    cout << "Max is " << max << " = " << maxCount << endl;
}

void TestRandom()
{
    Set<int> seen;
    while (true) {
        int num = RandomInteger(1, 100);
        if (seen.contains(num)) break;
        seen.add(num);
    }
    Set<int>::Iterator itr = seen.iterator();
    while (itr.hasNext()) 
        cout << itr.next() << endl;
}

int main()
{
    ifstream in("burgh.txt");
    Map<int> counts;
    ReadFile(in, counts);
    Randomize();
    TestRandom();
    return 0;
}

1 个答案:

答案 0 :(得分:0)

在ReadFile函数中(在多个地方),您尝试使用字符串作为Map的键,其中整数作为键。

string word;
in >> word;
if (in.fail()) break;
if (m.containsKey(word)) 
    m[word]++;

为了正确执行此操作,您需要将字符串输入解析为整数。这可以通过stoi函数或类似函数来实现。

实施例

string word;
in >> word;
int iKey = stoi(word, nullptr);
if (in.fail()) break;
if (m.containsKey(iKey)) 
    m[iKey]++;