Что я делаю неправильно? Эта программа принимает строку и выводит слова с помощью вектора
#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';
}
}