#include <iostream>
#include <sstream>
#include <string>
#include <vector>
int main()
{
std::string str = "I need to split input string";
std::vector<std::string> output;
std::istringstream iss(str);
std::string word;
const int max = 10;
while((iss >> word))
{
// Check if the last element can still hold another word (+ space)
if (output.size() > 0 && (output[output.size() - 1].size() + word.size() + 1) <= max)
output[output.size() - 1] += ' ' + word;
else
output.push_back(word);
}
for (auto&it : output)
std::cout << it << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHZlY3Rvcj4KCmludCBtYWluKCkKewoJc3RkOjpzdHJpbmcgc3RyID0gIkkgbmVlZCB0byBzcGxpdCBpbnB1dCBzdHJpbmciOyAgIAoJc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG91dHB1dDsKCQoJc3RkOjppc3RyaW5nc3RyZWFtIGlzcyhzdHIpOwoJc3RkOjpzdHJpbmcgd29yZDsKICAgIGNvbnN0IGludCBtYXggPSAxMDsKCgl3aGlsZSgoaXNzID4+IHdvcmQpKQogICAgewkKCSAgICAvLyBDaGVjayBpZiB0aGUgbGFzdCBlbGVtZW50IGNhbiBzdGlsbCBob2xkIGFub3RoZXIgd29yZCAoKyBzcGFjZSkKCSAgICBpZiAob3V0cHV0LnNpemUoKSA+IDAgJiYgKG91dHB1dFtvdXRwdXQuc2l6ZSgpIC0gMV0uc2l6ZSgpICsgd29yZC5zaXplKCkgKyAxKSA8PSBtYXgpCgkgICAgICAgIG91dHB1dFtvdXRwdXQuc2l6ZSgpIC0gMV0gKz0gJyAnICsgd29yZDsKCSAgICBlbHNlICAgICAgICAKCSAgICAgICAgb3V0cHV0LnB1c2hfYmFjayh3b3JkKTsKCX0KCQoJZm9yIChhdXRvJml0IDogb3V0cHV0KQoJICAgIHN0ZDo6Y291dCA8PCBpdCA8PCBzdGQ6OmVuZGw7CiAgICAKCXJldHVybiAwOwp9