Ofstream, используйте переменную для имени - PullRequest
1 голос
/ 27 февраля 2012

Привет всем людям ...

Извините за мой английский, но говорю по-испански ...

На этой неделе, учиться и работать над этим проектом, я хочу создать программное обеспечение дляmake files (.us) ...

Пример

char name[50]; //Or string
cin>>name;

ofstream PlayerPawn("D:\\UDK\\UDK_XXX\\Development\\Src\\" + name+"\\Classes\\_PlayerPawn.us");

Но в компиляторе есть ошибка в бинарном операторе плюс

Любая альтернатива, примеры или что-то для создания файла в определенной директории

До свидания и спасибо!

Ответы [ 2 ]

3 голосов
/ 27 февраля 2012

Любая сторона operator+ должна быть std::string 1 для operator+ для объединения строк:

string name;
cin >> name;

ofstream PlayerPawn("D:\\UDK\\UDK_XXX\\Development\\Src\\" + name + "\\Classes\\_PlayerPawn.us");

И использовать std::string для этого материала;с std::string нет опасности переполнения буфера, которое вы получаете с char*.

1 На самом деле это просто должен быть тип класса, который поддерживает operator+, а не конкретно std::string, но тогда вы не представляете, что он будет делать.

3 голосов
/ 27 февраля 2012

Полагаю, вы хотите, чтобы name было std::string - в противном случае name + [suffix] попытается добавить строку суффикса в массив и не скомпилируется.Если вы действительно хотите сохранить имя в виде массива, вы должны использовать strcat для добавления строк вместе.

...