0

我正在尝试传递文档名称以在 fstream 中打开,它适用于 ofstream 但不适用于 fstream。

例如,这工作正常...

void TestFunction (ofstream &test,char FileName []){
    cout << "test !!!" << endl;
    test.open(FileName);
    test << "test test test" << endl;
    test.close();
}

int main ()
{
    ofstream database;
    char FileName[100]="database.txt";

    TestFunction(database, FileName);
    getchar();
    return 0;
}

示例 2,这不会创建文件...

void TestFunction (fstream &test,char FileName []){
    cout << "test !!!" << endl;
    test.open(FileName);
    test << "test test test" << endl;
    test.close();
}

int main ()
{
    fstream database;
    char FileName[100]="database.txt";

    TestFunction(database, FileName);
    getchar();
    return 0;
}

任何人有任何建议我做错了什么?

编辑 经过更多谷歌搜索后,我找到了问题的答案,我现在应该删除我的问题还是? c ++:ifstream打开问题,为文本文件名传递字符串

4

1 回答 1

2

要使您的第二个版本正常工作,您可以添加标志ios_base::out

void TestFunction (fstream &test,char FileName []){
    cout << "test !!!" << endl;
    test.open(FileName, std::ios::out);
    //                  ^^^^^^^^^^^^
    test << "test test test" << endl;
    test.close();
}

如果您只想将内容写入文件,则可以选择更具体的版本,即std::ofstream.

因为basic_ofstream构造函数被设计为采用const char* as input parameter, so it doesn't acceptstd::string`,但是,这在 C++11 中被改变了。

explicit basic_ofstream( const char* filename,
                ios_base::openmode mode = ios_base::out );  // before C++11

explicit basic_ofstream( const string& filename,                                  
                ios_base::openmode mode = ios_base::out );  //  (since C++11)
于 2013-10-06T10:24:17.693 回答