Position von Iteratoren (auf einen std::string) ermitteln
-
Hallo,
Ich habe zwei Iteratoren auf einen String und möchte diesen nun mit "substr" aufteilen. substr nimmt nun leider size_type's als Parameter. Gibt es eine Möglichkeit die Index-Position eines Iterators herauszufinden, damit ich diese in "substr" verwenden kann?
In der MSDN hab ich leider nix gefunden.
-
kannst du nicht std::copy verwenden??
-
std::string hat nen Konstruktor, der zwei Iteratoren entgegennimmt. Zum Beispiel so:
#include <algorithm> #include <iostream> #include <string> int main() { std::string orig = "Hello, World!"; std::string::iterator i = std::find(orig.begin(), orig.end(), 'W'), j = std::find( i, orig.end(), '!'); std::string my_substring(i, j); std::cout << my_substring << std::endl; }
-
hmmmmm schrieb:
kannst du nicht std::copy verwenden??
Das übernimmt doch auch size_type's und damit hab ich wieder das Problem wie bei substr.
@0xdeadbeef
Super, genau das, wonach ich gesucht hab.
Danke
-
Hallo
Gibt es eine Möglichkeit die Index-Position eines Iterators herauszufinden
size_t index; string Text = "Hallo"; std::string::iterator i = std::find(Text.begin(), Text.end(), 'a'); index = i - Text.begin();
bis bald
akari
-
godlikebot schrieb:
hmmmmm schrieb:
kannst du nicht std::copy verwenden??
Das übernimmt doch auch size_type's und damit hab ich wieder das Problem wie bei substr.
template <class InputIterator, class OutputIterator> OutputIterator copy(InputIterator first, InputIterator last, OutputIterator result);
aber egal
-
und um an den size_type zu gelangen:
std::string str; //hier wird irgendwo irgendeine position im string meinIterator an str zugewiesen //... std::string::size_type pos=meinIterator-str.begin();