Re: Increment(++) a std::string
"Giovanni Dicanio" <giovanni.dicanio@invalid.it> wrote in message
news:%23CAuL6a2HHA.1168@TK2MSFTNGP02.phx.gbl...
"Jack" <jl@knight.com> ha scritto nel messaggio
news:%23HhyRra2HHA.5980@TK2MSFTNGP04.phx.gbl...
Hi
I have a std::string str of the form "12345"
if "str" points to 1, now I want it to point to 2, how do I achieve that?
I tried str++; but C2676 occurred
You might want to use the at() method of std::string; with at(), you can
reference string characters using a 0-based index (like in standard C
arrays).
So:
std::string str = "12345";
str.at(0) == '1'
str.at(1) == '2'
etc. ...
So you can use an integer index to scan string characters.
There's no reason to use at() if you know that the index is valid.
With the above trivial example this isn't really obvious to new
programmer.
Using at() is useful when you're not sure the index
is valid but it adds some cost. It also throws an exception when
it fails so you may want to catch that.
I'm sure that you're aware of this but I think that the OP may
not be. I've had some new hires write:
for(int i = 0, len = Buffer.size(); i < len; ++i) {
DoSomethingWith(Buffer.at(i));
}
What's the point of that? When I complained, I got
it back the same except the DoSomething... was wrapped
in a try/catch <g>
Another option is to use iterators (see e.g. std::string::begin())
This is the best option I think given the OP's idea of using
pointer to string semantics.