]> Creatis software - cpPlugins.git/blob - lib/cpPlugins/OS/String.cxx
0bb9b596e825a434ad84ef86cfe2e85ab63b7de7
[cpPlugins.git] / lib / cpPlugins / OS / String.cxx
1 #include <cpPlugins/OS/String.h>
2 #include <cstring>
3
4 // -------------------------------------------------------------------------
5 #ifdef cpPlugins_OS_Windows
6 #  define cpPlugins_STRTOK( A, B, N ) strtok_s( A, B, N )
7 #else // cpPlugins_OS_Windows
8 #  define cpPlugins_STRTOK( A, B, N ) std::strtok( A, B )
9 #endif // cpPlugins_OS_Windows
10
11 // -------------------------------------------------------------------------
12 std::vector< std::string > cpPlugins::OS::String::
13 Tokenize( const std::string& str, const std::string& delims )
14 {
15   std::vector< std::string > tokens;
16   if( str.size( ) > 0 )
17   {
18     auto ssize = str.size( );
19     char* buffer = new char[ ssize + 1 ];
20     for( unsigned long i = 0; i < ssize; ++i )
21       buffer[ i ] = str[ i ];
22     buffer[ ssize ] = '\0';
23     char* next;
24     char* it = cpPlugins_STRTOK( buffer, delims.c_str( ), &next );
25     while( it != NULL )
26     {
27       tokens.push_back( std::string( it ) );
28       it = cpPlugins_STRTOK( NULL, delims.c_str( ), &next );
29
30     } // elihw
31     delete [] buffer;
32
33   } // fi
34   return( tokens );
35 }
36
37 // eof - $RCSfile$