字符串未定向到输出文件 (C++)

String is not being directed to Output file (C++)

所以我正在尝试将从函数获得的字符串定向到输出文件。发生的事情是 buildTree 函数正在创建一个向量字符串的二叉树,然后在它完成后,它调用 printInorder 函数来按顺序打印该函数。如果我替换 file << tree.printVector(tempRoot->data); 它会正确地打印出树用 cout << tree.printVector(tempRoot->data);但是试图从 tree.printVector() 直接返回的字符串似乎没有做任何事情。 file.txt 在运行 之后仍然是空白。感谢帮助

这是代码

#include <iostream>
#include "node.h"
#include "tree.h"
#include "cleanString.h"
#include <string>
#include <fstream>
using std::cout;
using std::endl;

BST tree, *root = nullptr;

void buildTree(std::string name){
    ifstream file;
    file.open(name);
    
    if (file){
        std::string word;
        file >> word;
        word = cleanString(word);

        root = tree.Insert(root, word);

        while (file >> word){
            word = cleanString(word);
            tree.Insert(root, word);
        }

        //tree.Inorder(root);
        printInorder(root);
    } else{
        cout << "not a file" << endl;
    }
    file.close();
}

void printInorder(BST* tempRoot){
    ofstream file;
    std::string vecStrings;
    file.open("file.txt");

    if (!tempRoot) { 
        return; 
    } 
    printInorder(tempRoot->left); 
    vecStrings = tree.printVector(tempRoot->data);
    file << vecStrings << endl;                    // the issue here: wont put string in file.txt
    cout << vecStrings << endl;                    // but this will print

    printInorder(tempRoot->right); 
    
    file.close();
}
void printPreorder(){

}
void printPostorder(){

}

而不是一个打开和关闭文件的方法,这样写怎么样:

std::ostream &运算符<<(std::ostream &str, const BST &) { ... }

那么您就有了一个可以发送到任何输出流的通用打印方法。