設置 | 登錄 | 註冊

作者共發了2篇帖子。

【代码】用C++标准库实现explode函数和join函数

1樓 巨大八爪鱼 2016-3-22 23:35
#include <iostream>
#include <string>
#include <vector>

using namespace std;

vector<string> explode(string delimiter, string str)
{
    vector<string> arr;
    if (!str.empty()) {
        string::size_type pos, oldpos = 0;
        while (pos = str.find(delimiter, oldpos))
        {
            if (pos == string::npos)
            {
                arr.push_back(str.substr(oldpos));
                break;
            }
            else
            {
                arr.push_back(str.substr(oldpos, pos - oldpos));
                oldpos = pos + delimiter.length();
            }
        }
    }
    return arr;
}

string join(string delimiter, vector<string> &str)
{
    string result;
    vector<string>::iterator iter;
    for (iter = str.begin(); iter < str.end(); iter++)
    {
        result += *iter;
        if (iter + 1 < str.end())
            result += delimiter;
    }
    return result;
}

int main(void)
{
    vector<string> list = explode(", ", "this, that, these, those, find a pen, the pen");
    cout << "Size: " << list.size() << endl;

    vector<string>::iterator iter;
    for (iter = list.begin(); iter < list.end(); iter++)
        cout << *iter << endl;

    cout << join(";", list) << endl;

    return 0;
}
2樓 巨大八爪鱼 2016-3-22 23:35
运行结果:
Size: 6
this
that
these
those
find a pen
the pen
this;that;these;those;find a pen;the pen
Press any key to continue . . .

內容轉換:

回覆帖子
內容:
用戶名: 您目前是匿名發表。
驗證碼:
看不清?換一張
©2010-2025 Purasbar Ver3.0 [手機版] [桌面版]
除非另有聲明,本站採用知識共享署名-相同方式共享 3.0 Unported許可協議進行許可。