fstream, ofstream, передача имени документа, C ++

0

Я пытаюсь передать имя документа для открытия в fstream, он работает с потоком, но не с 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;
}

У кого-нибудь есть предложения, что я делаю неправильно?

РЕДАКТИРОВАТЬ После того, как еще один Google Gougling нашел ответ на мой вопрос, я должен удалить свой вопрос сейчас или? c++: проблема открытия ifstream с передачей строки для имени текстового файла

Теги:
fstream
ofstream

1 ответ

2
Лучший ответ

Чтобы сделать вашу вторую работу verson, вы можете добавить флаг 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 accept std :: string ', однако это изменяется в С++ 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)
  • 0
    Итак, у меня есть 2 решения сейчас? :) Можете ли вы объяснить мне немного больше? Если я правильно понял, ofstream автоматически добавляет std :: ios :: out, а fstream - нет? Почему c_str () работает?
  • 0
    Ммм ... fstream open
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню