0

ifstream 変数を取得する関数がありますが、場合によってはこのファイルに書き込む必要があります。例えば

main()
{
  ifstream dataFile("filename.txt");
  foo(dataFile);
}

void foo(ifstream &df)
{
  if(df.good()) {...}
  else {
     //here I need to write str into the "filename.txt"
     //but I don't know how to do it properly!
  }
}

私が想像できるように、最も簡単な方法は、 foo() で df からファイルの名前を何らかの方法で取得することです...しかし、どのように?

想像してみてください: fstream は使えません。何らかの理由で ifstream& しかなく、ファイルの名前がわかりません。たとえば、閉じたライブラリ関数から ifstream& を取得します。

4

2 に答える 2

0

残念ながら、ファイル名しかなく、ifstreamファイル名がないという制限があるため、そのファイルに書き戻す移植可能な方法はありません。

この問題を解決する移植性のない方法があるかもしれません。たとえば、一部の UNIX 実装fdfilebufrdbufifstream. Windows は、同様の機能を提供する場合と提供しない場合があります。

ここで間違った問題を解決しているように聞こえるかもしれませんが、少なくとも少し時間を取って設計を確認する必要があります (名前がわからないファイルに書き込む必要がある理由)。

于 2013-04-04T14:13:22.797 に答える