0
struct GPattern() {
    int gid;
    ....
}
class Example() {
public:
    void run(string _filename, unsigned int _minsup);
    void PrintGPattern(GPattern&, unsigned int sup);
    ....
};

Eample::run(string filename, unsigned int minsup) {
    for(...) {    // some condition
        // generate one GPattern, and i want to ouput it
        PrintGPattern(gp, sup);
    }
}

Example::PrintGPattern(GPattern& gp, unsigned int sup) {
    // I want to ouput each GPattern to a .txt file
}

run用于GPattern相应地生成一个。

我想要输出到文件的是一些重建原始GPattern.

我无法GPattern提前存储所有并输出所有这些。当我生成它时,我必须将它输出GPattern到一个文件,但我不知道如何实现它。

我试图ofstream outGPatter("pattern.txt")在课堂上声明Example,但它没有用......

4

3 回答 3

1

好吧,ofstream 是正确的方法:

Example::PrintGPattern(GPattern& gp, unsigned int sup) {
    ofstream outGPattern("pattern.txt")

    outGPattern << gp.gid; << " " << gp.anotherGid << " " ....

    outGPattern.close()
}

您是否查看了 pattern.txt 的正确位置?它应该在 .exe 所在的文件夹中,或者在所有 .h 和 .cpp 文件所在的文件夹中(至少对于 VS)。

如果要将所有模式写入同一个文件,则需要确保附加(而不是覆盖)pattern.txt

ofstream outGPattern("pattern.txt",ios::app)

因此,您可以在程序开始时首先制作一个不带 ios::app 的 ofstream(以清除文本文件)。然后,您使用 ios::app 构造所有其他 ofstream 以附加新文本,而不是覆盖它。

或者,您可以使 ofstream 成为 Example 的成员变量。然后你只构建一次。

于 2012-04-06T07:18:07.223 回答
1

我认为您可以使用附加模式,例如:

ofstream outGPattern;
outGPattern.open("GPattern.txt", ios::app);
于 2012-04-06T08:31:42.147 回答
1

我看到它的方式,你想附加多个信息GPattern,你只需要ios::app在构造函数中设置 I/O 模式。

struct GPattern {
  int gid;
  friend ostream& operator <<(ostream& o, GPattern gp) {
    return o << "(gid=" << gp.gid << ")";
  }
  ...
}

Example::PrintGPattern(GPattern& gp, unsigned int sup) {
  ofstream fout("pattern.txt", ios::app)
  fout << gp << endl;
  fout.close()
}
于 2012-04-06T08:38:11.037 回答