Я пытаюсь передать имя документа для открытия в 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 с передачей строки для имени текстового файла
Чтобы сделать вашу вторую работу 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)
fstream open