libcw/cwString.cpp

48 lines
788 B
C++
Raw Normal View History

2020-10-04 14:48:27 +00:00
#include "cwCommon.h"
#include "cwLog.h"
#include "cwCommonImpl.h"
#include "cwMem.h"
#include "cwString.h"
unsigned cw::str::len( const char* s)
{
if( s == nullptr )
return 0;
return strlen(s);
}
char* cw::str::dupl( const char* s )
{ return mem::duplStr(s); }
char* cw::str::join( const char* sep, const char** subStrArray, unsigned ssN )
{
unsigned sN = 0;
char* s = nullptr;
for(unsigned i=0; i<ssN; ++i)
sN += len(subStrArray[i]);
if( ssN >= 1 )
sN += (ssN-1) * len(sep);
if( sN == 0 )
return nullptr;
sN += 1;
s = mem::alloc<char>(sN);
s[0] = 0;
for(unsigned i=0; i<ssN; ++i)
{
strcat(s,subStrArray[i]);
if( sep != nullptr && ssN>=1 && i<ssN-1 )
strcat(s,sep);
assert( len(s) < sN );
}
return s;
}