Что я делаю неправильно? Эта программа принимает строку и выводит слова с помощью вектора

#include<iostream>
#include<vector>
#include<string>

using namespace std;

int k = 0;
string s;
int j = 0;

vector<string> SplitIntoWords(string text)
{
    
    text = " "s + text;
    vector<string> words;
    for (int i = 0; i < size(text); i++)
    {
        if (text[i] == ' ')
        {
            k = k + 1;
            words.resize(k, "");
            j = 0;
        }
        if (text[i] != ' ')
        {
            
            words[k][j] = text[i];
            j = j + 1;
        }

    }
    return words;
}

int main()
{
    getline(cin, s);
    
    SplitIntoWords(s);
    system("pause");
    return 0;
}

Программа должна разбить строку на слова, записать эти слова в вектор и вывести с помощью одной функции. Слова разделяются только пробелами


Ответы (1 шт):

Автор решения: dIm0n

Вот так вот можно разбить строку на вектор слов для разделителей-пробелов:

#include <string>
#include <sstream>
#include <vector>
#include <iterator>
#include <iostream>

int main() {
    const auto s = "rgw gwreg 4wtb twb   bwtbb";
    std::istringstream ss{s};
    const std::vector<std::string> words{std::istream_iterator<std::string>{ss}, std::istream_iterator<std::string>{}};
    
    for (const auto& word : words) {
        std::cout << word << '\n';
    }
}
→ Ссылка