создание файла с тем же именем, что и ввод - PullRequest
0 голосов
/ 30 июня 2011
cout << "Enter your full name";
char* name ;

cin >> name;
  if( _mkdir("c:\\names") == 0 ) {
     cout << "directory successfully created";
  }  else {
       cout << "there was a problem creating a directory";
     }

Теперь я хочу создать файл (файл .txt) в каталоге names с тем же именем, что и имя user. Я имею в виду имя, которое пользователь ввел во время cin >> name;.

Как я могу это сделать?

ofstream writeName( "c:/names/????); ----> ПРОБЛЕМА

Ответы [ 3 ]

4 голосов
/ 30 июня 2011

Используйте std::string вместо char*.Так как ваш код имеет неопределенное поведение.Используйте std::getline вместо >>.При >> вводится только первое разделенное пробелами «слово».Затем составьте полный путь в std::string.Стандартный класс строк поддерживает конкатенацию, поэтому это должно быть легко.

Скажем, если эта строка path,

std::ofstream f( path.c_str() );

Cheers & hth.,

0 голосов
/ 30 июня 2011

char* указывает на один символ. Поскольку он не инициализирован, он указывает на нирвану -> неопределенное поведение .

Вы можете попробовать использовать char name[MAX_LENGTH_FOR_YOUR_NAME]. Лучше использовать std::string name здесь.

0 голосов
/ 30 июня 2011

Вы можете создать текстовый файл, fopen используя файл или ofstream.

Но ваш способ ввода данных для name кажется неправильным.Вы не выделили место для name.Попробуйте использовать malloc или new

...