パスを追加し、パスの一部として変数を含めようとしていますが、エラーが発生します。
どうしたの?
fstream fin("E:\\Games\\maps\\" + this->MapNumber + ".map", ios::in|ios::binary|ios::ate);
this->MapNumber は USHORT です
エラー: 13 IntelliSense: 式には整数型またはスコープ外の列挙型が必要です
パスを追加し、パスの一部として変数を含めようとしていますが、エラーが発生します。
どうしたの?
fstream fin("E:\\Games\\maps\\" + this->MapNumber + ".map", ios::in|ios::binary|ios::ate);
this->MapNumber は USHORT です
エラー: 13 IntelliSense: 式には整数型またはスコープ外の列挙型が必要です
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>
。
文字列や文字列のような別の型では 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);