ファイル名の作成には、とを使用std::ostringstreamしoperator<<ます。
次のようなコンテナクラスを使用する場合std::vector(たとえば、コンパイル時にの配列の大きさがわからないためifstream)、std::ifstreamはコピーできないため、は使用できませんが、または;vector<ifstream>を使用できます。例えば:vector<shared_ptr<ifstream>>vector<unique_ptr<ifstream>>
vector<shared_ptr<ifstream>> myFiles;
for (int i = 0; i < count; i++)
{
ostringstream filename;
filename << "info" << i << ".txt";
myFiles.push_back( make_shared<ifstream>( filename.str() ) );
}
unique_ptr(およびC ++ 11の移動セマンティクス)を使用する場合:
vector<unique_ptr<ifstream>> myFiles;
for (int i = 0; i < count; i++)
{
ostringstream filename;
filename << "info" << i << ".txt";
unique_ptr<ifstream> file( new ifstream(filename.str()) );
myFiles.push_back( move(file) );
}
unqiue_ptrは移動可能shared_ptrなポインタであるため、参照カウントされないため、よりも効率的ですunique_ptr(したがって、よりもオーバーヘッドが少なくなります)。したがって、C ++ 11では、'がコンテナの外部で共有されていない場合に優先することができます。shared_ptrunique_ptrifstreamvector