Ich versuche, einen Container zu verwenden, um den Iterator der Zeichenfolge s
zu speichern, aber ich habe Segmentfehler, wenn ich es ausführe. Wie Sie im Folgenden sehen werden, scheint der Fehler mit char temp = **itbegin;
zu kommen, es könnte bedeuten, dass ich über den vorherigen Iterator keinen Wert zuweisen kann.Wie verwende ich diesen Iterator richtig?
Warum ist es? Habe ich den Iterator missbraucht? Wie benutze ich den Iterator richtig?
#include <iostream>
#include <vector>
using namespace std;
string reverseVowels(string s);
int main()
{
string s ="hello";
cout << reverseVowels(s);
}
string reverseVowels(string s) {
string::iterator iter = s.begin();
string::iterator iterend = s.end();
vector<string::iterator> iteratorbox;
for(;iter != iterend ; ++iter){
if((*iter) == 'a' &&
(*iter) == 'e' &&
(*iter) == 'i' &&
(*iter) == 'o' &&
(*iter) == 'u'){
iteratorbox.push_back(iter);
}
}
auto itbegin = iteratorbox.begin();
auto itend = iteratorbox.end() ;
--itend;
//for(;itbegin < itend ; ++itbegin, --itend)
{
char temp = **itbegin;
// *(*itbegin) = *(*itend);
// *(*itend) = temp;
}
return s;
}
Um das zu beheben, schreiben Sie 'char temp = (* itbegin) [0];' –
Sie sollten '#include' hinzufügen, um den Code portierbar zu machen. –