226 lines
4.8 KiB
C++
226 lines
4.8 KiB
C++
#include "stdafx.h"
|
|
#include "UTBStrOp.h"
|
|
|
|
#include <stdio.h>
|
|
#include <stdarg.h>
|
|
#include <string.h>
|
|
|
|
void UTBStr::tcscpy(TCHAR * dest, SIZE_T length, const TCHAR* src)
|
|
{
|
|
#if _MSC_VER >= 1400
|
|
::_tcscpy_s(dest, length, src);
|
|
#else
|
|
UNREFERENCED_PARAMETER(length);
|
|
::_tcscpy(dest,src);
|
|
# endif
|
|
}
|
|
|
|
char* UTBStr::fcvt(double val, int count, int * dec, int * sign)
|
|
{
|
|
#if _MSC_VER >= 1400
|
|
UNREFERENCED_PARAMETER(sign);
|
|
char * dest = new char[count * 2 + 10];
|
|
::_fcvt_s(dest, count * 2 + 9, val, count, dec, sign);
|
|
return dest;
|
|
#else
|
|
return ::_fcvt(val, count, dec, sign);
|
|
# endif
|
|
}
|
|
|
|
void UTBStr::strncpy(char * dest, size_t size, const char * src, size_t count)
|
|
{
|
|
if (size == 0) size = 1;
|
|
#if _MSC_VER >= 1400
|
|
::strncpy_s(dest, size, src, count);
|
|
#else
|
|
UNREFERENCED_PARAMETER(size);
|
|
::strncpy(dest, src, count);
|
|
# endif
|
|
}
|
|
|
|
void UTBStr::stprintf(TCHAR * dest, size_t size, const TCHAR * src, ...)
|
|
{
|
|
va_list vl;
|
|
va_start( vl, src );
|
|
|
|
#if _MSC_VER >= 1400
|
|
_vstprintf_s_l(dest, size, src, NULL, vl);
|
|
#else
|
|
UNREFERENCED_PARAMETER(size);
|
|
_vstprintf(dest, src, vl);
|
|
# endif
|
|
|
|
va_end( vl );
|
|
}
|
|
|
|
void UTBStr::sprintf(char * dest, size_t size, const char * src, ...)
|
|
{
|
|
va_list vl;
|
|
va_start( vl, src );
|
|
|
|
#if _MSC_VER >= 1400
|
|
_vsprintf_s_l(dest, size, src, NULL, vl);
|
|
#else
|
|
UNREFERENCED_PARAMETER(size);
|
|
vsprintf(dest, src, vl);
|
|
# endif
|
|
|
|
va_end( vl );
|
|
}
|
|
|
|
|
|
void UTBStr::tcscat(TCHAR * dest, SIZE_T length, const TCHAR* src)
|
|
{
|
|
#if _MSC_VER >= 1400
|
|
_tcscat_s(dest, length, src);
|
|
#else
|
|
UNREFERENCED_PARAMETER(length);
|
|
_tcscat(dest, src);
|
|
# endif
|
|
}
|
|
|
|
void UTBStr::tcsncat(TCHAR * dest, size_t size, const TCHAR * src, size_t count)
|
|
{
|
|
#if _MSC_VER >= 1400
|
|
_tcsncat_s(dest, size, src, count);
|
|
#else
|
|
UNREFERENCED_PARAMETER(size);
|
|
_tcsncat(dest, src, count);
|
|
# endif
|
|
}
|
|
|
|
|
|
void UTBStr::wcstombs(size_t *pConvertedChars, char *mbstr,
|
|
size_t sizeInBytes, const wchar_t *wcstr, size_t count)
|
|
{
|
|
#if _MSC_VER >= 1400
|
|
wcstombs_s(pConvertedChars, mbstr, sizeInBytes, wcstr, count);
|
|
#else
|
|
UNREFERENCED_PARAMETER(sizeInBytes);
|
|
*pConvertedChars = ::wcstombs(mbstr, wcstr, count);
|
|
#endif
|
|
}
|
|
|
|
void UTBStr::itot(int value, TCHAR * dest, size_t size, int radix)
|
|
{
|
|
#if _MSC_VER >= 1400
|
|
_itot_s(value, dest, size, radix);
|
|
#else
|
|
UNREFERENCED_PARAMETER(size);
|
|
_itot(value, dest, radix);
|
|
#endif
|
|
}
|
|
|
|
void UTBStr::itoa(int value, char * dest, size_t size, int radix)
|
|
{
|
|
#if _MSC_VER >= 1400
|
|
_itoa_s(value, dest, size, radix);
|
|
#else
|
|
UNREFERENCED_PARAMETER(size);
|
|
_itoa(value, dest, radix);
|
|
#endif
|
|
}
|
|
|
|
void UTBStr::ltot(long value, TCHAR * dest, size_t size, int radix)
|
|
{
|
|
#if _MSC_VER >= 1400
|
|
_ltot_s(value, dest, size, radix);
|
|
#else
|
|
UNREFERENCED_PARAMETER(size);
|
|
_ltot(value, dest, radix);
|
|
#endif
|
|
}
|
|
|
|
TCHAR* UTBStr::tcstok(TCHAR* strToken, const TCHAR* strDelimit, TCHAR ** context)
|
|
{
|
|
#if _MSC_VER >= 1400
|
|
return _tcstok_s(strToken, strDelimit, context);
|
|
#else
|
|
UNREFERENCED_PARAMETER(context);
|
|
return _tcstok(strToken, strDelimit);
|
|
#endif
|
|
}
|
|
|
|
void UTBStr::tsplitpath(const TCHAR * path, TCHAR * drive, size_t driveSizeInTCHARacters, TCHAR * dir,
|
|
size_t dirSizeInTCHARacters, TCHAR * fname, size_t nameSizeInTCHARacters, TCHAR * ext, size_t extSizeInBytes)
|
|
{
|
|
#if _MSC_VER >= 1400
|
|
_tsplitpath_s(path, drive, driveSizeInTCHARacters, dir, dirSizeInTCHARacters, fname, nameSizeInTCHARacters, ext, extSizeInBytes);
|
|
#else
|
|
UNREFERENCED_PARAMETER(driveSizeInTCHARacters);
|
|
UNREFERENCED_PARAMETER(dirSizeInTCHARacters);
|
|
UNREFERENCED_PARAMETER(nameSizeInTCHARacters);
|
|
UNREFERENCED_PARAMETER(extSizeInBytes);
|
|
_tsplitpath(path, drive, dir, fname, ext);
|
|
#endif
|
|
}
|
|
void UTBStr::tcsncpy(TCHAR * dest, size_t dstSize, const TCHAR * src, size_t maxCount)
|
|
{
|
|
#if _MSC_VER >= 1400
|
|
_tcsncpy_s(dest, dstSize, src, maxCount);
|
|
#else
|
|
UNREFERENCED_PARAMETER(dstSize);
|
|
#ifdef _UNICODE
|
|
::wcsncpy(dest,src, maxCount);
|
|
#else
|
|
::strncpy(dest,src, maxCount);
|
|
#endif
|
|
#endif
|
|
}
|
|
|
|
TCHAR * UTBStr::tgetenv(const TCHAR *varname)
|
|
{
|
|
#if _MSC_VER >= 1400
|
|
TCHAR* retval;
|
|
size_t requiredSize;
|
|
// Get required length
|
|
_tgetenv_s( &requiredSize, NULL, 0, varname);
|
|
retval = new TCHAR[requiredSize];
|
|
if (!_tgetenv_s( &requiredSize, retval, requiredSize, varname ))
|
|
return retval;
|
|
else
|
|
{
|
|
delete [] retval;
|
|
return NULL;
|
|
}
|
|
|
|
#else
|
|
return _tgetenv(varname);
|
|
#endif
|
|
}
|
|
|
|
size_t UTBStr::mbstowcs(wchar_t *wcstr, size_t sizeInWords, const char *mbstr, size_t count )
|
|
{
|
|
#if _MSC_VER >= 1400
|
|
size_t retval;
|
|
|
|
if (!mbstowcs_s(&retval, wcstr, sizeInWords, mbstr, count))
|
|
return retval;
|
|
|
|
return 0;
|
|
#else
|
|
UNREFERENCED_PARAMETER(sizeInWords);
|
|
return ::mbstowcs(wcstr, mbstr, count);
|
|
#endif
|
|
}
|
|
|
|
void UTBStr::wcscpy(wchar_t * dest, size_t size, const wchar_t * source)
|
|
{
|
|
#if _MSC_VER >= 1400
|
|
|
|
wcscpy_s(dest, size, source);
|
|
#else
|
|
UNREFERENCED_PARAMETER(size);
|
|
::wcscpy(dest, source);
|
|
#endif
|
|
}
|
|
|
|
void UTBStr::strcpy(char * dest, size_t size, const char * src)
|
|
{
|
|
#if _MSC_VER >= 1400
|
|
strcpy_s(dest, size, src);
|
|
#else
|
|
UNREFERENCED_PARAMETER(size);
|
|
::strcpy(dest, src);
|
|
#endif
|
|
} |