9

I need to split a string into specific lengths, e.g. if user specifies it to units of max length 4, then the loop should run on the original input "0123456789asdf" to get "0123", "4567", "89as", "df".

I can't really figure out the best way to do this - and I need it to be in a loop as further processing needs to be done on each subunit of the strong. TIA.

edit: I do not know how long the original string is, and I only know the size of the chunk it needs to become. Also, I need chunks of the string of the specified length, and the last chunk containing the remainder of the string (if it is less than the specified length).

1

2 Answers 2

30
string str("0123456789asdf");

for (unsigned i = 0; i < str.length(); i += 4) {
    cout << str.substr(i, 4) << endl;
}
Sign up to request clarification or add additional context in comments.

1 Comment

This does not work if the string is not a multiple of 4
0

std::string can take a range as its constructor argument (constructor 6). Use it:

char const str[] = "0123456789asdf";
std::string x(str, str + 4); // "0123"

Here, str and str + 4 are pointers to characters into the char array, which are compatible with the ForwardIterator concept. (Pointers are iterators)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.