链接:https://www.nowcoder.com/questionTerminal/48b3cb4e3c694d9da5526e6255bb73c3
来源:牛客网
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
输入描述:
将一个英文语句以单词为单位逆序排放。
输出描述:
得到逆序的句子
示例
输入
I am a boy
输出
boy a am I
用C++中的stringstream来处理很简单:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main(){
string s;
getline(cin,s);
stringstream ss(s);
string res=" ",tmp;
while(ss>>tmp){
if(res == " ")
res = tmp;
else
res = tmp + " " + res;
}
cout<<res;
}
再举几个stringstream的简单使用例子:
1.计算string中单词的个数
int countWords (string str){
stringstream s(str);
string word;
int count = 0;
while (s>>word)
count++;
return count;
}
2.计算string中每个单词出现的个数
void printFrequency(string st)
{
map<string,int> FW;
stringstream ss(st);
string Word;
while(ss>> Word)
FW[Word]++;
map<string, int>::iterator m;
for (m = FW.begin(); m!=FW.end(); m++)
cout<<m->first<<" ->"<< m->second <<" \n";
}
3.将string转换成为数字
int convertToInt(string str)
{
stringstream ss(str);
int x;
ss>>x;
return x;
}
4.int转string
#include <string>
#include <sstream>
#include <iostream>
int main()
{
std::stringstream stream;
std::string result;
int i = 1000;
stream << i; //将int输入流
stream >> result; //从stream中抽取前面插入的int值
std::cout << result << std::endl; // print the string "1000"
}
参考:https://blog.csdn.net/u012836279/article/details/80381803