字符串中单词逆序 && stringstream的简单使用

链接: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 
 

猜你喜欢

转载自blog.csdn.net/zpznba/article/details/88635791