寫這個只是用來記憶一下,時至今日才發現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 得到的...