std :: stringイテレータだけが与えられた場合、文字列の開始点と終了点を決定することは可能ですか?文字列オブジェクトにアクセスできないため、string.begin()とstring.end()を呼び出すことができず、イテレータをインクリメントまたはデクリメントして値をテストするだけでよいと仮定します。
ありがとう、フィル
簡単な答えはノーです。長い答えは、イテレータは反復しているコンテナまたは範囲について知ることを期待されていないため、次のことだけを期待されているということです。
さらに、特定のタイプのイテレータは、上記以外のことも実行できますが、基本的には、何らかの形で上記を実行する必要があります。
デフォルトのstd::string :: iteratorは単なるランダムな双方向イテレータであり、コンテナについては何も知りません。
ただし、Visual C ++プラットフォームで作業している場合は、次のようなハッキング方法を使用して、コンテナーへのコントロールを取得できますが、非常に危険です。
// it is the passed in string::iterator parameter.
if (it._Has_container()) {
string* strRef = (string*)it._Mycont;
}