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

1 Answer

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

std::string getMiddleWords(const std::string& str) {
    std::istringstream iss(str);
    std::vector<std::string> wordsArr;
    std::string word;

    while (iss >> word) {
        wordsArr.push_back(word);
    }

    size_t numWords = wordsArr.size();

    if (numWords % 2 == 0) {
        std::string middle1 = wordsArr[floor(numWords / 2) - 1];
        std::string middle2 = wordsArr[floor(numWords / 2)];
        return middle1 + " " + middle2;
    } else {
        std::string middle_minus_1 = wordsArr[floor(numWords / 2) - 1];
        std::string middle = wordsArr[floor(numWords / 2)];
        std::string middle_plus_1 = wordsArr[floor(numWords / 2) + 1];
        return middle_minus_1 + " " + middle + " " + middle_plus_1;
    }
}

int main() {
    std::string str = "c++ c java php c# python rust";
    
    std::cout << getMiddleWords(str) << std::endl;
}


/*
run:

java php c#

*/

 



answered Oct 8, 2024 by avibootz

Related questions

2 answers 686 views
1 answer 170 views
1 answer 100 views
1 answer 116 views
1 answer 119 views
1 answer 119 views
...