只給出一個std :: string迭代器,是否可以確定字符串的開始點和結束點?假設我無權訪問字符串對象,因此無法調用string.begin()和string.end(),我所能做的就是遞增或遞減迭代器並測試該值。使用std :: string迭代器來查找它的字符串的開始和結束
感謝, 菲爾
只給出一個std :: string迭代器,是否可以確定字符串的開始點和結束點?假設我無權訪問字符串對象,因此無法調用string.begin()和string.end(),我所能做的就是遞增或遞減迭代器並測試該值。使用std :: string迭代器來查找它的字符串的開始和結束
感謝, 菲爾
簡短的答案是否定的。長的答案是,因爲迭代器不需要知道正在迭代的容器或範圍,所以它們只能預測爲
此外,某些類型的迭代器可能做的不僅僅是上面的內容,而是主要是它們都被要求以某種形式執行/執行上述操作。
默認的std :: string :: iterator只是一個隨機的雙向迭代器,並不知道容器的任何內容。
但是,如果你在的Visual C++平臺上工作,也許你可以使用一些黑客攻擊方式像下面得到控制,它的容器,但它是非常危險的:
// it is the passed in string::iterator parameter.
if (it._Has_container()) {
string* strRef = (string*)it._Mycont;
}
是的,你definitly需要迭代指着結束還是開始比較你的當前迭代器,當你定義字符串時可以確定的東西? – DogDog 2010-03-03 04:32:51