2012-12-23 65 views
0

我试图追加我的路径并包含一个变量作为路径的一部分,但我得到一个错误。如何将这个变量添加到我的ifstream路径中?

它有什么问题?

fstream fin("E:\\Games\\maps\\" + this->MapNumber + ".map", ios::in|ios::binary|ios::ate); 

this->MapNumber is a USHORT

error: 13 IntelliSense: expression must have integral or unscoped enum type

+1

如果'this-MapNumber'是一个数字,那么当然你不能用'const char *'连接它。你可能必须做一些转换或使用'std :: stringstream'。 – 0x499602D2

+1

你可以跳到这样的结论:你可以在C++中用一个'+'连接一个'const char [N]'到'unsigned short',但事实并非如此。您正在使用哪一本[C++书](http://jcatki.no-ip.org/fncpp/Resources)? –

+0

我没有用书,只是通过我的方式搜索 – Dean

回答

2

C++不能使用+来串联文本字符串。您可以使用+std::string s来连接它们,但这不适用于整数或其他类型。您需要改用。插入并提取到将导致支持它的类型将它们自己表示为文本,但您可能已经从通用的I/O中知道这一点。

尝试这样的事:

std::stringstream filename; 
filename << "E:\\Games\\maps\\" << this->MapNumber << ".map"; 

std::fstream fin(filename.str().c_str(), ios::in|ios::binary|ios::ate); 

就像使用一切,用你需要的东西包括首先声明它的头。要使用std::stringstream,您需要包含<sstream>

+0

好的答案主要是_explanations_,而不是代码转储... –

+0

我试过这个,但得到了错误,我错过了什么? – Dean

+1

@Dean:可能包括''? –

0

不能使用的字符串和运营商+其他类型如String左右,你可以:

选项1:把所有的变量转换成字符串追加他们

string s = string("E:\\Games\\maps\\") + string(itoa(this->MapNumber)) + string(".map"); 

选项2:使用字符串流作为@ K-BALLO解释

选项3:使用好旧的C fprintf中(我个人最喜欢的)

char str[100]; 
fprintf(str, "E:\\Games\\maps\\ %d .map", this->MapNumber); 
相关问题