Я пишу функцию для перестановки слов в строке. Моя идея состоит в том, чтобы разбить строку на ' ', поместить слова в стек и вытолкнуть их, чтобы напечатать строку с перевернутыми словами.
Но я не могу разбить строку с помощью класса stringstream.
Мой код выглядит следующим образом:
#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<stack>
#include<string>
#include<bits/stdc++.h>
using namespace std;
void reverse_words(string s){
stack <string> stack_words;
string popped_element;
string result = "";
stringstream split(s);
string token;
while(getline(split,token,' ')){
cout<<"pushed "<<token;
stack_words.push(token);
}
while(!stack_words.empty()){
popped_element = stack_words.top();
stack_words.pop();
result.append(" ");
result.append(popped_element);
}
cout<<result;
}
int main(){
string s,res;
cout<<"\n Enter a string :";
cin>>s;
reverse_words(s);
}
Например, когда я ввожу «Hello World», в стек помещается только «Hello», тогда как мне нужно, чтобы в стеке присутствовали «Hello» и «World».
Кто-нибудь знает, что не так с моим кодом?
operator>>
) перестают читать на пробеле. Другие операции ввода, включаяgetline
, этого не делают. - person Pete Becker   schedule 22.12.2020