2012-02-27 74 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::stringoperator+连接字符串:

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:\用户\ Warkanlock \文件\代码块\ UDK_ProyectSimple \ main.cpp中| 20 |错误:调用“的std :: basic_ofstream <字符,性病:: char_t没有匹配功能raits > :: basic_ofstream(std :: basic_string ,std :: allocator >)'|' – Warkanlock 2012-02-27 19:30:36

+0

@Warkanlock确保在代码的顶部放置了'#include '。 – 2012-02-27 19:31:21

+0

不,不,这包括有包括在文件中,但有这样的错误... – Warkanlock 2012-02-27 19:35:45

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 2012-02-27 19:33:26

+0

那么,这不是同一个错误 - 你需要'#include '来定义什么是“ofstream”是 – Matt 2012-02-27 19:38:18

+0

Ya这包括含有该文件中:○ – Warkanlock 2012-02-27 19:40:47