C/C++

Подскажите, что не верно в коде.

Дано задание, но реализовать его правильно не получается.
Доработайте разбиение строки на слова. Сложите слова в вектор строк words, а затем выведите его содержимое в формате:
for (string word : words) {
cout << '[' << word << ']' << endl;
}

вот мой код:

#include <iostream>
#include <string>
#include <sstream>
#include <vector>
using namespace std;
int main() {
system("chcp 1251 > nul");
cout << "Введите строку: ";
string line;
getline(cin, line);
istringstream iss(line);
string word;
vector<string> box;
while (iss >> word) box.push_back(word);
for (auto word : box) cout << '[' << word << ']' << endl;
system("pause > nul");
}
Nodir Raximov
Nodir Raximov
52 815
Лучший ответ
закрывающей фигурной скобки не хватает (в начале синеньким подчёркнута открывающая без пары)
Алексей Четвериков закрывающая скобка есть, её не видно на скриншоте
что такое words.push_back(query) и что оно делает ПО ВАШЕМУ? (это и есть проблема, а подсказку вам дали)
#include <iostream>
#include <string>

using namespace std;

int main() {
string query;
getline(cin, query);

string word;
for (int i = 0; i < query.size(); ++i) {
if (query[i] == ' ') {
cout << '[' << word << ']' << endl;
word = ""s;
} else {
word += query[i];
}
}
cout << '[' << word << ']' << endl;
}
#include < iostream>
#include < string>
#include< vector>
using namespace std;

int main() {
string word; //переменная для хранения символов из а
vector< string> words; //вектор для хранения слов из word
string a; //переменная для хранения строки

getline(cin,a);
//перебираем а посимвольно
for(int x=0; x<a.size();++x){
//если а в очередном месте символ не равен пробел или -, то добавляем символ к word
if(a.at(x)!=' '&& a.at(x)!='-'){
word+=a.at(x);
}
//в ином случае, пихаем в зад вектору words накопленные в word символы
else {
words.push_back(word);
word=""s;
}
}
//если в конце строки а нет пробела, то последнее слово не добавиться в вектор,
т. ч. пихаем насильно.
words.push_back(word);

//если words не опустело магическим образом, то перебираем ячейки в words выводя их содержимое
if(words.empty()){
cout<<"empty"s<<endl;
}
else{
for(string str : words){
cout<<'['<<str<<']'<<endl;
}
}
//проблема кода в том, что он не выячняет где слова, а где нет, а пихает набор символов перед каждым пробелом, т. е. если строка а будет начинаться с пробела или содержать более одного пробела подряд, то лишние пробелы будут выводится в скобках как слова.
}