1
我想循環遍歷一個向量並將所有輸入與一個值進行比較。所以我創造了這個結構:如何使迭代器的行爲像一個類型通過迭代?
for (vector<string>::const_iterator i = needle.begin(); i != needle.end(); ++i) {
cout << *i << " ";
}
印刷工作的很好,但我希望能夠訪問std::string
功能,即find
因此,雖然我能夠寫needle[index].find("sampleString");
我希望能夠使迭代器的行爲與此類似。那麼如何製作如*i.find("sampleString");
?
但爲什麼那麼這段代碼'爲(矢量 ::爲const_iterator I = needle.begin(); I = needle.end(); ++我!){ cout << i-> find(「hello world!」)<<「」; }',其中針矢量保持5個值,打印出這個輸出? '4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 ' –
Dworza
@Dworza:由於沒有任何字符串包含' 「世界,你好!」',所以'find'返回'STD: :string :: npos',這是一個很大的整數值。如果任何字符串確實包含您要查找的內容,則會得到一個較小的數字,表示它在字符串中找到的位置。我不知道你爲什麼得到超過5個數字打印;據推測,它實際上並不具有5個值,但是我不能看出你是如何填充它的。如果您對「查找」的工作方式有疑問,或者您的媒介爲什麼沒有預期的內容,那就問問他們是否有新問題。 –
呃......是啊......我的壞......我想反過來去比較......但是這並沒有解決這個問題,我得到了如此多的值:-S喜歡輸入:'「你好」,「世界「,」rld「,」ell「,」hell「,我想與''hello wordl!'比較',我得到輸出'0 6 8 1 0 0 6 8 1 0 0 8 8 1 0 0 6 8 1 0' – Dworza