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 s を使用してそれらを連結できますが、整数型やその他の型std::stringでは機能しません。代わりにストリームを使用する必要があります。ストリームへの挿入と抽出により、それをサポートする型がテキストとして表現されますが、おそらく一般的な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 の説明に従って stringstream を使用

オプション 3: 古き良き C fprintf (私の個人的なお気に入り) を使用します。

char str[100];
fprintf(str, "E:\\Games\\maps\\ %d .map", this->MapNumber);
于 2012-12-24T00:16:57.617 に答える