c 中字串split函式

2021-08-28 22:07:24 字數 1044 閱讀 8040

寫這個只是用來記憶一下,時至今日才發現c++ 的cstring類中已經有了字串分split的函式,自己一直沒有發現,羞愧難當,不過還好我是乙個知恥後勇的人,既然今天發現了,那就記下來。

cstring中有乙個strtok_s函式,它是乙個分割字串安全函式,其函式原型如下:

char *strtok_s( char *_string, const char *_delimiter, char **_context); 

// _string是帶分割的字串陣列的首位址

// _delimiter是分割字串的字元集合,可以是單個字元,也可以是字元集合

// _context是乙個上下文本元指標的指標,每次對_string進行處理之後將剩餘字元儲存在_context指向的位置中,保證執行緒安全

c++中一般儲存字串使用string型別,而strtok_s中需要的是char的變數,string中呼叫c_str()或者data()成員函式返回的是const char, 不能作為strtok_s中第乙個變數的輸入,怎麼辦呢?

我們只能使用const_cast,它能給乙個變數增加const屬性,也可以刪除乙個變數的const屬性,於是我們可以使用const_cast去掉const屬性。

示例**如下。示例**將str中的字串,用空格進行分割後放入到strvec中。

這裡需要說明的時,如果_delimiter是字元集合的話,表示對_string進行分割,分割後的每乙個子字串都不含有_delimiter中的任何乙個字元。

#include

#include

#include

using namespace std;

intmain()

for(

auto

&e : strvec)

printf

("%s \n"

, e.

data()

);return0;

}

還是不得不感慨一下,c++和python相比,乙個split,居然就要多寫6行的**,給跪了。

C 中Split用法 字串分隔

using system.text.regularexpressions string str aaajsbbbjsccc string sarray regex.split str,js regexoptions.ignorecase foreach string i in sarray resp...

C 中實現字串分割split

c 預設沒有提供字串分割函式,若要對字串進行分割則需自己處理。首先想到的就是使用string find函式查詢到指定的分隔符,然後通過substr擷取子串,來實現字串的分割。更方便的方式 c 提供了從輸入流中獲取子串的getline,配合istringstream,即能方便地實現字串的分割操作 以提...

hive函式 split 字串分割函式

hive字串分割函式 split str,regex splits str around occurances that match regex time taken 0.769 seconds,fetched 1 row s 返回值為乙個陣列 a.基本用法 例1 split a,b,c,d 得到的...