c++ string 大小写转换,split隔断指定字符

//问题来源为ACM,将一串字符串缩写变大写,简称。
//
这两段代码共用到的头文件 #include<iostream> #include<cstring> #include<cstdio> #include<iostream> #include<iomanip> #include <vector> #include <string> #include <algorithm> using namespace std; //string小写转大写 void toUpper(string &str) { int length = 0; length = str.length(); for(int i=0; i<length; i++) { if(str[i]<='z' && str[i]>='a') str[i] = str[i]-32; } }
//隔断指定字符
vector<string> split(string str,string pattern)
{
    int pos;//std::string::size_type
    vector<string> result;
    str+=pattern;//扩展字符串以方便操作
    int size=str.size();

    for(int i=0; i<size; i++)
    {
        pos=str.find(pattern,i);
        if(pos<size)
        {
            string s=str.substr(i,pos-i);
            result.push_back(s);
            i=pos+pattern.size()-1;
        }
    }
    return result;
}


int main()
{
    string str;
    cin.ignore(1,'
');//解决第一次输入多一个回车问题(原因是第一次的回车仍然在输入流中)
    getline(cin,str);
    vector<string> result=split(str," ");//空格分隔单词
    string::size_type i;//因为result.size类型的问题,这里定义i
    for(i=0; i<result.size(); i++)
    {
        result[i]=result[i].substr(0,1);//获得隔断后的首字符
        //transform(result[i].begin(), result[i].end(), result[i].begin(), toupper); //大小写转换,在g++编译器中报错
        toUpper(result[i]);//大小写转换
        cout<<result[i];
    }
    return 0;
}

输入:

most valuable player

输出:

MVP

原文地址:https://www.cnblogs.com/bkycjj/p/3556267.html