字串分隔

2022-09-19 22:27:19 字數 831 閱讀 6794

1 引言

1.1 strtok

說到字串分隔,通常都會想到strtok,不過strtok缺陷也比較多,比如

破壞原字串;(修改查到的分割字串為『\0』)

連續的字串,strtok會跳過;(意思就是如 aaa,bbb,,ccc,中間連續兩個,,直接跳過,不返回null,直接返回ccc的位置,但有時候業務需求需要判斷這樣的情況)

1.2 乙個典型的場景

如文字的匹配,文字format as:  

id,name,age,interest,from

「1,馬雲,18,,阿里巴巴"

使用逗號提取,分別賦值給變數char* id,name,age,interest,from

假如使用strtok,interest會直接被賦值為"阿里巴巴",from就被不能被賦值了。

這裡封裝了乙個介面,如果大家用得上,也是極好的。

//strsep是關鍵點,記得是核心中的乙個字串分隔的實現,不同於strtok,連續的兩個字串會返回null。美中不足的是,也會破壞原字串。

char* strsep(char **stringp, const char *delim)

} while (sc != 0);

}

/* notreached */

}//封裝一下賦值過程,簡化呼叫,data是原字串,count是引數個數,可變參是待賦值的二級指標。

void x_strsep(char *data, int param_count, ...)

}//呼叫

int main(int argc, const char* ar**)

字串分隔

題目 連續輸入字串,請按長度為8拆分每個字串後輸出到新的字串陣列 長度不是8整數倍的字串請在後面補數字0,空字串不處理。輸入 abc 123456789輸出 abc00000 12345678 90000000 include include using namespace std char str...

分隔字串

注 此sql原作者 袁老大 create or replace package split pck is type char table is table of varchar2 4000 function split string pi str in varchar2,pi separator i...

字串分隔

連續輸入字串,請按長度為8拆分每個字串後輸出到新的字串陣列 長度不是8整數倍的字串請在後面補數字0,空字串不處理。連續輸入字串 輸入2次,每個字串長度小於100 輸出到長度為8的新字串陣列。abc 123456789abc00000 12345678 90000000華為機試題。我的思路是先假設輸入...