ここでの引用符は、ほとんどニシンです。それらは、あなたが達成しようとしていることに対して必要でも十分でもありません。
いくつかの選択肢があります。1 つは、ユーザーの入力を算術型ではなく文字列として読み取ることです。
std::string fname;
std::cout << "Please enter integer for file name: ";
std::getline(std::cin, fname);
std::fstream file(fname);
もう 1 つは、数値を整数として入力し、それを文字列に変換する方法です。
int fnum;
std::cin >> fnum;
std::string fname = std::to_string(fnum);
std::fstream f(fname);
ファイル拡張子を追加したい可能性はかなり高いので、ユーザーが入力する123
と、ファイル名は (たとえば) になり123.txt
ます。これを行うには、次のようなことを行うことができます: fname += ".txt";
fstream オブジェクトを作成する直前。
編集:
VC++ 2012 でテストされた、完全な/コンパイル可能なデモを次に示します。
#include <string>
#include <iostream>
#include <fstream>
int main() {
int fnum;
std::cout << "Please enter integer for file name: ";
std::cin >> fnum;
std::string fname = std::to_string(fnum);
fname += ".txt";
std::ofstream f(fname);
f << "Contents";
}
これを実行して (たとえば) と入力すると、 "Contents" を含む123
名前のファイルが取得されます。123.txt
ほぼ同様のコードが g++ 4.7.2 でも機能しますが、(少なくとも私が持っているコピーには)std::to_string
まだ含まれていないため、その部分を操作するには簡単な書き直しが必要です。