C++ 在c+中拆分字符串+;

C++ 在c+中拆分字符串+;,c++,string,stringstream,C++,String,Stringstream,我正在写一个函数来反转字符串中的单词。我的想法是将一个字符串按“”拆分,将单词放入堆栈中,然后将其弹出,打印出单词颠倒的字符串 但是,我无法使用stringstream类拆分字符串 我的代码如下: #include<iostream> #include<stdlib.h> #include<string.h> #include<stack> #include<string> #include<bits/stdc++.h>

我正在写一个函数来反转字符串中的单词。我的想法是将一个字符串按“”拆分,将单词放入堆栈中,然后将其弹出,打印出单词颠倒的字符串

但是,我无法使用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);

}


#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
无效反向_字(字符串s){
堆叠单词;
字符串弹出_元素;
字符串结果=”;
溪流分流;;
字符串标记;
while(getline(拆分,标记“”){
这个怎么样

#include <bits/stdc++.h>
#include <iostream>

using namespace std;

void reverseWords(string s)
{
    vector<string> tmp;

    string str = "";

    for (int i = 0; i < s.length(); i++) 
    {
        if (s[i] == ' ') 
        {
            tmp.push_back(str);
            str = "";
        }
        else
            str += s[i];
    }
    tmp.push_back(str);
    int i;
    for (i = tmp.size() - 1; i > 0; i--)
        cout << tmp[i] << " ";

    cout << tmp[0] << endl;
}

int main()
{
    string s;
    getline(cin,s);
    reverseWords(s);
    return 0;
}
#包括
#包括
使用名称空间std;
void reverseWords(字符串s)
{
向量tmp;
字符串str=“”;
对于(int i=0;i0;i--)

cout在您的情况下,流提取器(
operator>
)在Hello world中的空格后停止读取,因此
s=“Hello”
。 要解决此问题,请使用
getline(cin,s);


我被编辑成包含更多细节,如

Cin在空格后停止阅读,所以s只是他的名字,我现在理解这个问题。@DevUt-流提取器(
operator>
)在空白处停止读取。其他输入操作,包括
getline
,没有。无关:读取并摆脱。硬编码字符串不是一个好方法。最终程序需要用户输入,我们只是不想通过测试用例。抱歉,我读得太多了。谢谢你的回答,尽管我试图理解是什么我的代码出了问题:)
std::cin
不会决定何时停止阅读。是
操作员>
停止阅读。+1。@PeteBecker谢谢你,伙计,这是我在知识饼上添加的新东西