如何将我的c ++编译器输出保存在创建的文本文件中?

时间:2019-04-13 17:14:15

标签: c++

我正在使用c ++编写一个简单的编译器,但是输出仅在控制台窗口中显示!

class Scanner{
private:
    ifstream f;
    Token check_reserved(string s){
        if (s == "program") return PROGRAM_SY;
        else if (s == "is")return IS_SY;
        else if (s == "begin")return BEGIN_SY;
        else if (s == "end")return END_SY;
        else if (s == "var")return VAR_SY;
}

void display_tokens(void){
        Token t;
        if (f.eof())cout << "end_of_file " << endl;
        while (!f.eof()){
            t = get_token();
            switch (t){
            case PROGRAM_SY: cout << "program token" << endl; break;
            case IS_SY: cout << "is token" << endl; break;
            case BEGIN_SY: cout << "begin token" << endl; break;
            case END_SY: cout << "end token" << endl; break;
            }
        }

    }
};

int main(){

    ofstream myfile;
    myfile.open("example.txt");
    myfile << SC.display_tokens();
    myfile.close();

    string Filename;
    cout << "Enter Name of input File : ";
    cin >> Filename;
    Scanner SC(Filename);
    SC.display_tokens();
    SC.~Scanner();
}

我希望我的代码可以在控制台窗口中打印输出,并将其保存在文本文件中。 这是什么问题,什么是获取我的输出的正确代码?

1 个答案:

答案 0 :(得分:0)

一个问题是函数需要返回值,以便您将值输出到流。

您的函数声明说该函数没有返回值:

void display_tokens(void)

但是,您可以像使用函数一样返回值:

myfile << SC.display_tokens();

我建议您在“编译器理论”书中复习“功能”的主题。另外,请阅读您最喜欢的C ++书籍中的“函数”。

您可以更改功能:

void display_tokens(std::ostream& my_file)
{
    //...
    my_file << "Here are the tokens:\n";
    //...
}