Вы говорите, что это не работает, но вы не говорите, как. Я вижу два непосредственных
prblems: во-первых, вы сразу же возвращаетесь, когда найдете первый
слово с четной длиной, так что вы, очевидно, не нарушите
слова; а во-вторых, если вы хотите продолжить, insert
изменит значения любой позиции после нее.
(FWIW: Сначала я бы разбил всю строку на слова,
положить их в std::vector<std::string>
, а затем повторить,
вставив дополнительное место, где это необходимо, затем соберите их. Это
вероятно, немного медленнее, чем подход, который вы используете, но это много
чище и легче следовать.)