5

以下のコード スニペットで、 の 2 番目の呼び出しを囲む括弧を除外するとstd::istreambuf_iterator、最後の行でコンパイル エラーが発生します。

.c_str() の左側には、クラス/構造体/共用体が必要です。

std::ifstream file("file.txt");;

std::string prog(
    std::istreambuf_iterator<char>(file),
    (std::istreambuf_iterator<char>()));
prog.c_str();

これらの括弧は実際に何をしますか? それらは除外できるはずだと私には思えます。

4

1 に答える 1

6

括弧がないと、これは最も厄介な parseのケースになります。変数を宣言するのではなく、 を返す関数がstd::string呼び出されprog、これら 2 つの型をパラメーターとして受け取ります。後で呼び出そうとすると、リンカー エラーが発生します。

于 2012-09-11T18:31:21.720 に答える