split string分隔字符串的3种实现

第一种,分隔符为空格。

使用istringstream来放置split之后的结果

#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
    string s("Somewhere down the road");
    istringstream iss(s);

    do
    {
        string sub;
        iss >> sub;
        cout << "Substring: " << sub << endl;
    } while (iss);

}

第二种,分隔符为任意字符。

使用vector<string>来放置split之后的结果

/**
 *  切割字符串
 *  @param  original    [in]    需要切分的字符串
 *  @param  separator    [in]    分隔符
 *  @param  col_limit   [in]    最多解析的栏目数,0解析全部域
 *  @param  result  [out]   输出列表
 */
void split_string(const string& original, char separator, uint32_t col_limit, vector<string>* result)
{
    result->clear();
    size_t current_pos = 0, previous_pos = 0;
    uint32_t col_count = 0;
    while((current_pos = original.find(separator, previous_pos)) != string::npos && (col_limit == 0 || col_count < col_limit))
    {
        string part(original.substr(previous_pos, current_pos - previous_pos));
        result->push_back(part);
        previous_pos = current_pos + 1;
        col_count ++;
    }

    if(col_limit == 0 || col_count < col_limit)
    {
        string part(original.substr(previous_pos));
        result->push_back(part);
    }
}

第三种,分隔符为任意字符。

使用动态分配的内存来放置分隔后的结果,输出结果为一个数组的地址,数组的元素的类型为char*,即数组的每个元素是一个char*指针,指向的分割后的一小段的地址。

int split_string(char chr,char * src,uint32_t dstlimit,char ** dstlist,uint32_t * dstnum)
{
    char * ptab;
    ptab = src;
    *dstnum = 0;
    if(*ptab != 0)
      dstlist[(*dstnum)++] = ptab;
    ptab = strchr(ptab,chr);
    while(ptab != NULL && *dstnum < dstlimit){
        *ptab++ = '\0';
         dstlist[(*dstnum)++] = ptab;
         ptab=strchr(ptab,chr);
    }
    return 0;
 }

调用方式

char * field_list[33];
uint32_t feature_item_num;
uint32_t tmp_value;
struct in_addr tmp_addr;
split_string('\t',line,33,field_list,&feature_item_num);
if(feature_item_num != 33){
    ADR_WARNING("parse src line error! %s\n",field_list[0]);
    ADR_WARNING("unexpected number of splitting result! \n");
    return -1;
}
sscanf(field_list[18],"%d",&tmp_value);



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
split()方法是在JavaScript中最常用的字符串操作之一。它可以将一个字符串分割成字符串数组,通过指定分隔符来实现。 语法: ```javascript string.split([separator[, limit]]) ``` 参数说明: - separator(可选):指定分隔符,默认为逗号。 - limit(可选):指定返回的字符串数组的最大长度。 示例: ```javascript var str = "apple,banana,orange"; var arr = str.split(","); console.log(arr); // ["apple", "banana", "orange"] var str2 = "Monday Tuesday Wednesday"; var arr2 = str2.split(" "); console.log(arr2); // ["Monday", "Tuesday", "Wednesday"] ``` 如果不指定分隔符,则返回包含整个字符串的数组,如下所示: ```javascript var str = "JavaScript is fun"; var arr = str.split(); console.log(arr); // ["JavaScript is fun"] ``` 如果指定了一个空字符串作为分隔符,则字符串将被分解成单个字符,并返回数组,如下所示: ```javascript var str = "JavaScript is fun"; var arr = str.split(""); console.log(arr); // ["J", "a", "v", "a", "S", "c", "r", "i", "p", "t", " ", "i", "s", " ", "f", "u", "n"] ``` 如果指定了一个无法找到的分隔符,则返回包含原始字符串的数组,如下所示: ```javascript var str = "JavaScript is fun"; var arr = str.split("|"); console.log(arr); // ["JavaScript is fun"] ``` 注意点: - split()方法返回的是一个数组,不会改变原始字符串本身。 - 如果分隔符是一个正则表达式,则分隔符需要用括号括起来,否则括号内的内容视为分隔符的一部分。例如:str.split(/\s*;\s*/); - 如果分隔符是一个字符串,而该字符串正好等于原始字符串,则返回一个长度为1的数组,包含原始字符串。例如:str.split("JavaScript is fun")。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值