2012-02-27 157 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