What is the preferred way to remove spaces from a string in C++? I could loop through all the characters and build a new string, but is there a better way?
The best thing to do is to use the algorithm
Now the algorithm itself can't change the container(only modify the values), so it actually shuffles the values around and returns a pointer to where the end now should be. So we have to call string::erase to actually modify the length of the container:
We should also note that remove_if will make at most one copy of the data. Here is a sample implementation:
|
|||||||||||||||
|
You can use this solution for removing a char:
|
||||
|
From gamedev
|
|||||
|
use it:
|
||||
|
Hi, you can do something like that. This function deletes all spaces.
I made another function, that deletes all unnecessary spaces.
|
|||||
|
For trimming, use boost string algorithms:
|
|||||
|
|
|||||
|
Can you use Boost String Algo? http://www.boost.org/doc/libs/1_35_0/doc/html/string_algo/usage.html#id1290573
|
||||
|
I'm afraid it's the best solution that I can think of. But you can use reserve() to pre-allocate the minimum required memory in advance to speed up things a bit. You'll end up with a new string that will probably be shorter but that takes up the same amount of memory, but you'll avoid reallocations. EDIT: Depending on your situation, this may incur less overhead than jumbling characters around. You should try different approaches and see what is best for you: you might not have any performance issues at all. Dave |
||||
|
|
|||||||||
|