15

クラスで定義されたメンバー関数とクラスで定義tellg()されたメンバー関数の名前が異なるのはなぜだろうと思っていました。と から派生しているからですか?basic_istream<>tellp()basic_ostream<>basic_fstream<>basic_istream<>basic_ostream<>

4

2 に答える 2

8

tellg()ポインターの位置を取得し、getポインターの位置をtellp()取得しputます。そのうちの1つはファイルの読み取り場所であり、2番目の場所はファイルへの書き込み場所です。したがって、2 つの関数は異なることを行い、異なる値を返します。なぜ同じ名前にする必要があると思いますか?

于 2013-01-25T12:51:36.113 に答える
7

また、 や などの双方向ストリームでそれらをどのように区別しますstd::fstreamstd::stringstream? ストリームは、入力と出力に対して別々のポインターを維持することができます。fstream そうではありませんが、stringstreamそうです。したがって、どちらが必要かを示すフラグが必要になるか ( の場合のようにstreambuf)、2 つの別個の関数が必要になります。

于 2013-01-25T13:48:30.687 に答える