C++ 在c+中拆分字符串+;
我正在写一个函数来反转字符串中的单词。我的想法是将一个字符串按“”拆分,将单词放入堆栈中,然后将其弹出,打印出单词颠倒的字符串 但是,我无法使用stringstream类拆分字符串 我的代码如下: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>
#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谢谢你,伙计,这是我在知识饼上添加的新东西