字符串未定向到输出文件 (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 &) {
...
}
那么您就有了一个可以发送到任何输出流的通用打印方法。
所以我正在尝试将从函数获得的字符串定向到输出文件。发生的事情是 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 &) { ... }
那么您就有了一个可以发送到任何输出流的通用打印方法。