C++ string

来源:互联网 发布:笔记本电脑录视频软件 编辑:程序博客网 时间:2024/05/19 03:44

简介
C、C++在处理字符串时有点不太方便,像java、python可能一条语句处理的事,C++则有点不方便,本文参考了一篇博文,利用STL中的string类写了一个函数,并写了一个AC的demo,用于判断字符串split分隔之后的数之和是否与指定数字相等。
1.运行效果

2.string、int互转

#include <string>#include <sstream>stringstream ss;int num;string str;ss << str;  // ss << numss >> num;  // ss >> str

3.完整代码

#include <iostream>#include <string>#include <sstream>#include <vector>using namespace std;int split(const string& str, vector<int>& ret_, string sep = ","){    if (str.empty())    {        return 0;    }    string tmp;    string::size_type pos_begin = str.find_first_not_of(sep);    string::size_type comma_pos = 0;    while (pos_begin != string::npos)    {        comma_pos = str.find(sep, pos_begin);        if (comma_pos != string::npos)        {            tmp = str.substr(pos_begin, comma_pos - pos_begin);            pos_begin = comma_pos + sep.length();        }        else        {            tmp = str.substr(pos_begin);            pos_begin = comma_pos;        }        if (!tmp.empty())        {            //string -> int            stringstream ss;            int int_tmp;            ss << tmp;            ss >> int_tmp;            ret_.push_back(int_tmp);            tmp.clear();        }    }    return 0;}int output_vector(vector<int> vec){    if(vec.empty())    {        cout << "The vector is empty!" << endl;        return 0;    }    vector<int>::iterator iter;    for(iter = vec.begin(); iter != vec.end(); iter++)        cout << *iter << " ";    cout << endl;    return 0;}int sum_of_vector(vector<int> vec){    if (vec.empty())    {        cout << "The vector in sum function is empty!" << endl;        return 0;    }     else    {        int sum = 0;        for (int i = 0; i < vec.size(); i++)        {            sum += vec[i];        }        return sum;    }}int main(){    string str;    int sum;    //循环判断测试用例    while (cin >> str)    {        cin >> sum;        vector<int> vec;        split(str,vec,",");        //output_vector(vec);        //cout << "Sum : " << sum << endl;        int accout_sum = sum_of_vector(vec);        if(sum == accout_sum)            cout << "Yes" << endl;        else            cout << "No" << endl;    }    return 0;}

参考文献
1 . C++ 使用STL string 实现的split,trim,replace-修订

0 0
原创粉丝点击