Create a StringArray from this string, this process depend on code page, default is system code page,it can be changed by function set_code_page_for_string_process
The second version, allows for automatic conversion of numeric strings to a double type vector.
Note: If one or more tokens in the string contain a single "double quote" character ("), even escaped like \", this method will output a general operation failure error and code execution will stop at that point. See the last example below for how to use the okutil_get_tokens function to avoid this issue. |
int GetTokens( StringArray & saTokens, char chDelimiter = 0 )
int GetTokens( vector & vTokens, char chDelimiter = 0 )
Number of tokens (strings) found
Number of tokens found
EX1
void string_GetTokens_ex1() { StringArray strTokens; strTokens.SetSize(3); string str = "1@2@3#4#5$6$"; int nRet = str.GetTokens( strTokens, '@'); if(nRet) { //Should print "1 2 3#4#5$6$" change '@' to '#' or '$' to see different result for(int ii = 0; ii<nRet; ii++) printf("%s\t", strTokens[ii]); } else printf("Fail to get token.\n") }
EX2
void string_GetTokens_ex2() { vector vTokens; string str = "1@2@3@7.897"; int nRet = str.GetTokens( vTokens, '@'); if(nRet) { //Should print "1.000000 2.000000 3.000000 7.897000". for(int ii = 0; ii<nRet; ii++) printf("%f\t", vTokens[ii]); } else printf("Fail to get token.\n") }
Example for when one or more tokens in the string contain a single double quote character. See Description for more information.
void okutil_get_tokens_ex() { string str = "a|\"b\"|\"|c\"d|e\\\"f";// String: a|"b"|"|c"d|e\"f StringArray sa; okutil_get_tokens(str, &sa, '|', NULL, 0, GT_IGNORE_QUOTES); for( int ii= 0; ii < sa.GetSize(); ii++ ) { printf("%s\n", sa[ii]); } /* Outputs: a "b" " c"d e\"f */ }
okutil_get_tokens, string::SetTokens, string::GetNumTokens, string::GetToken
origin.h