Re: How to get address of iterator currently pointer to?
Jack wrote:
"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
After it is incremented for a few times, I'd like to get the address of
the iterator currently pointing to?
The problem is if I compare "it" with another address, using the form
if (it <= endAddr)
break the infinite loop
whoops
if (it >= endAddr)
break the loop
the compiler doesn't like it and throws C2678.
Does anyone know how to work around it?
Jack:
You are never going to get anywhere if you keep mixing these old C ways
with the C++ standard library. Get a book!!!
AFAIK, iterators do not define operator [], unless they happen to be
implemented as pointers (which they may or may not be).
Also, unlike std::vector, std::string is not guaranteed to be stored in
contiguous memory (although it probably always is).
std::string = "12345";
std::string::iterator itBegin = str.begin();
std::string::iterator itEnd = str.end();
for (std::string::iterator it = itBegin; it != itEnd; ++it)
{
// stuff
}
--
David Wilkinson
Visual C++ MVP