"extern vector <string>startParsing (FILE *);" - PullRequest
0 голосов
/ 01 февраля 2020

Я изучаю C ++, и у меня есть следующая проблема. Я не могу понять, как это предложение взаимодействует

extern vector<string> startParsing(FILE*);

Я пытался найти информацию о (FILE*), но ничего не могу найти.

main. cpp

#include <iostream>
#include <fstream>
#include "Parser/parser.h"

using namespace std;

int main(int argc, char** argv)
{
    cout<<"Welcome to Group 01 final project."<<endl;
    std::string rule_file = "urbanmodel.zoo";

    // parsing
    Parser parser(rule_file);
    std::vector<std::string> tokens = parser.parse();
    parser.printTokens();

    return 1;
}

парсер. cpp

#include "parser.h"
extern vector<string> startParsing(FILE*); //<---------------------???

Parser::Parser(string filePath){
    // open a file handle to a particular file:
    this->myfile = fopen(filePath.c_str(), "r");
    // make sure it's valid:
    if (!this->myfile) {
    cout << "I can't open the urbanmodel.zoo file!" << endl;
    }
};

vector<string> Parser::parse(){
    if(this->myfile)
    this->tokens = startParsing(myfile);
    return this->tokens;
};

void Parser::printTokens(){
    int size = this->tokens.size();
    for(int i=0;i<size;i++)
    cout<<this->tokens[i];
    cout<<std::endl;
};

parser.h

#include <iostream>
#include <vector>
#include <cstdio>
#include "scanner.h"
using namespace std;

class Parser{
private:
    FILE* myfile;  //<----------------------------------------???
    vector<string> tokens;
public:
    Parser(string filePath);
    vector<string> parse();
    void printTokens();
};
...