How to reverse the middle words of a string in C++

1 Answer

0 votes
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>

std::string reverseMiddleWords(const std::string& s) {
    std::stringstream ss(s);
    std::vector<std::string> words;
    std::string word;

    // Split into words
    while (ss >> word) {
        words.push_back(word);
    }

    // If fewer than 3 words, nothing to reverse
    if (words.size() < 3) return s;

    // Reverse middle words
    for (size_t i = 1; i < words.size() - 1; ++i) {
        reverse(words[i].begin(), words[i].end());
    }

    // Rebuild the string
    std::string result;
    for (size_t i = 0; i < words.size(); ++i) {
        result += words[i];
        if (i + 1 < words.size()) result += " ";
    }

    return result;
}

int main() {
    std::string input = "Hello how are you today";
    
    std::cout << reverseMiddleWords(input) << std::endl;
}

 
   
/*
run:
   
Hello woh era uoy today

*/

 



answered Dec 11, 2019 by avibootz
edited Dec 25, 2025 by avibootz
...