0

何かを行うための関数を作成するように指示するデータ ファイルに関する質問に遭遇しました。他のすべての質問では、「abc.txt」などの固定ファイル名を扱っているため、関数は一般化されていません。ステートメントでデータファイルが文字列変数を使用する方法があったかどうかを知りたいです。

fstream file("abc.txt",ios::in|ios::out);

そしてそれを次のように変えます:

char str[20]="Newfile.txt";
fstream file(str,ios::in|ios::out);

でファイル名として文字列を使用する方法はありますstd::fstreamか? プログラムのコンパイルではエラーは表示されませんが、文字列を使用してみましたが、そのようなファイルは作成されていません。

4

1 に答える 1

6

コンパイラに依存します。この方法は一貫して機能します。

void do_something(std::string const &filename) {

    std::fstream(filename.c_str());
    // ...
}

この方法は、新しい (C++11) コンパイラでは機能しますが、古いものでは機能しません:

void do_something(std::string const &filename) {

    std::fstream(filename);
    // ...
}
于 2013-02-04T04:58:54.847 に答える