2012-02-27 3 views
1

Привета для всех людей ...Ofstream, используйте переменный с именем

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

В этой неделе, учебе и работе для этого proyect, я хочу создать программное обеспечение, чтобы сделать файлы (.us) ...

Пример

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

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

Но компилятор имеет ошибку в Оператор бинарный плюс

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

Прощай и Thx!

ответ

3

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

string name; 
cin >> name; 

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

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


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

+0

Но измените переменную на std :: string, но с этой ошибкой ... 'D: \ Users \ Warkanlock \ Documents \ Code Blocks \ UDK_ProyectSimple \ main.cpp | 20 | ошибка: нет соответствующей функции для вызова в 'std :: basic_ofstream > :: basic_ofstream (std :: basic_string , std :: allocator >) '| ' – Warkanlock

+0

@Warkanlock убедитесь, что вы положили' #include 'в верхней части кода. –

+0

Нет, это включает в себя файл, но имеет эту ошибку ... – Warkanlock

3

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

+0

Но, чтобы изменить переменную на String и имеет ту же ошибку! D: \ Users \ Warkanlock \ Documents \ Code Blocks \ UDK_ProyectSimple \ main.cpp | 20 | ошибка: нет соответствующей функции для вызова в 'std :: basic_ofstream > :: basic_ofstream (std :: basic_string , std :: allocator >) '| ' – Warkanlock

+0

Ну, это не та же ошибка - вам нужно« #include », чтобы определить, что такое« из потока » – Matt

+0

Ya , включите в этот файл: o – Warkanlock

Смежные вопросы