0

我正在尝试附加我的路径并包含一个变量作为路径的一部分,但出现错误。

它出什么问题了?

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

this->MapNumber 是一个 USHORT

错误:13 IntelliSense:表达式必须具有整数或无范围枚举类型

4

2 回答 2

2

C++中,您不能使用+连接文字字符串。您可以使用+with std::strings 来连接它们,但这不适用于整数或其他类型。您需要改用。插入和提取到流中会导致支持它的类型将自己表示为文本,但您可能已经从一般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>.

于 2012-12-23T23:29:57.537 回答
0

您不能在字符串和其他类型(如字符串)上使用 operator+ 或者您可以:

选项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);
于 2012-12-24T00:16:57.617 回答