Re: How to get address of iterator currently pointer to?
"Jack" <jl@knight.com> ha scritto nel messaggio
news:O7FpCuc2HHA.1208@TK2MSFTNGP05.phx.gbl...
"Jack" <jl@knight.com>
???g???l???s?D:Ob0Lusc2HHA.6128@TK2MSFTNGP02.phx.gbl...
Let's say I have an iterator "it"
std::string::iterator it;
char *__w64 startAddr = &it[0];
char *__w64 endAddr = startAddr + buf.size();
The start and end addresses tell me the start and end of file in memory
[...]
if (it >= endAddr)
break the loop
[...]
the compiler doesn't like it and throws C2678.
I think that you shouldn't compare std::string::iterator's with char*'s. I'm
not an STL guru and maybe the implementation of std::string::iterator is
actually done as char*, but those classes are different things, at least at
the "interface" abstraction level (how the iterator is *implemented*, is a
different thing).
So, you should compare char*'s with char*'s, and iterator's with iterator's.
So, you may write code like so:
std::string s; // your string...
std::string::iterator start = s.begin();
std::string::iterator end = start + <the offset you want>
// Start from beginning
std::string::iterator it = start;
// Compare *iterators*... e.g.:
while ( it < end )
{
...do things with *it
++it; // go to next character
}
Giovanni