#include "platform/nstring.hpp" #include "string.h" #include "wchar.h" #include "stdlib.h" size_t nstring::length(const wchar_t* pstr,int MaxCount) { return !pstr? 0 : MaxCount? wcsnlen(pstr,MaxCount): wcslen(pstr); } size_t nstring::length(const char* pstr,int MaxCount) { return !pstr? 0 : MaxCount? strnlen(pstr,MaxCount): strlen(pstr); } wchar_t* nstring::clone(const wchar_t* psrc) { return !psrc? nullptr: _wcsdup(psrc); } char* nstring::clone(const char* psrc) { return !psrc? nullptr: _strdup(psrc); } size_t nstring::find(const wchar_t* psrc, const wchar_t* substr,int pos) { return !psrc || !substr ? -1 : wcsstr(psrc+pos,substr)? wcsstr(psrc+pos,substr) - psrc : -1; } size_t nstring::find(const char* psrc, const char* substr,int pos) { return !psrc || !substr ? -1 : strstr(psrc+pos,substr)? strstr(psrc+pos,substr) - psrc : -1; } const wchar_t* nstring::str(const wchar_t* psrc, const wchar_t* substr) { return !psrc?nullptr:!substr?nullptr:wcsstr(psrc,substr); } const char* nstring::str(const char* psrc, const char* substr) { return !psrc?nullptr:!substr?nullptr:strstr(psrc,substr); } wchar_t * nstring::set(wchar_t * psrc, int val) { return _wcsset(psrc,val); } char * nstring::set(char * psrc, int val) { return _strset(psrc,val); } wchar_t* nstring::ncpy(wchar_t* pdest, const wchar_t* psrc,int nlen) { return !pdest? nullptr : !psrc?pdest: wcsncpy(pdest,psrc,nlen); } char* nstring::ncpy(char* pdest, const char* psrc,int nlen) { return !pdest? nullptr : !psrc?pdest: strncpy(pdest,psrc,nlen); } wchar_t* nstring::cpy(wchar_t* pdest, const wchar_t* psrc) { return !pdest? nullptr : !psrc?pdest: wcscpy(pdest,psrc); } char* nstring::cpy(char* pdest, const char* psrc) { return !pdest? nullptr : !psrc?pdest: strcpy(pdest,psrc); } int nstring::cmp(const wchar_t* pstr1,const wchar_t* pstr2,int MaxCount) { return !pstr1 && !pstr2? 0: !pstr1? 1:!pstr2?-1:MaxCount? wcsncmp(pstr1,pstr2,MaxCount): wcscmp(pstr1,pstr2); } int nstring::cmp(const char* pstr1,const char* pstr2,int MaxCount) { return !pstr1 && !pstr2? 0: !pstr1? 1:!pstr2?-1:MaxCount? strncmp(pstr1,pstr2,MaxCount): strcmp(pstr1,pstr2); } int nstring::icmp(const wchar_t* pstr1,const wchar_t* pstr2,int MaxCount) { return !pstr1 && !pstr2? 0: !pstr1? 1:!pstr2?-1:MaxCount? _wcsnicmp(pstr1,pstr2,MaxCount): _wcsicmp(pstr1,pstr2); } int nstring::icmp(const char* pstr1,const char* pstr2,int MaxCount) { return !pstr1 && !pstr2? 0: !pstr1? 1:!pstr2?-1:MaxCount? _strnicmp(pstr1,pstr2,MaxCount): _stricmp(pstr1,pstr2); } wchar_t* nstring::cat(wchar_t* pdest, wchar_t* psrc,int MaxCount) { return !pdest? nullptr:!psrc? pdest: MaxCount? wcsncat(pdest,psrc,MaxCount): wcscat(pdest,psrc); } char* nstring::cat(char* pdest, char* psrc,int MaxCount) { return !pdest? nullptr:!psrc? pdest: MaxCount? strncat(pdest,psrc,MaxCount): strcat(pdest,psrc); } const wchar_t* nstring::chr(const wchar_t* psrc, int val) { return !psrc?nullptr: wcschr(psrc,val); } const char* nstring::chr(const char* psrc, int val) { return !psrc?nullptr: strchr(psrc,val); } int nstring::coll(const wchar_t* pstr1,const wchar_t* pstr2) { return !pstr1 && !pstr2? 0: !pstr1? 1:!pstr2?-1: wcscoll(pstr1,pstr2); } int nstring::coll(const char* pstr1,const char* pstr2) { return !pstr1 && !pstr2? 0: !pstr1? 1:!pstr2?-1: strcoll(pstr1,pstr2); } size_t nstring::cspn(const wchar_t *_Str,const wchar_t *_Control) { return !_Str||!_Control?-1: wcscspn(_Str,_Control); } size_t nstring::cspn(const char *_Str,const char *_Control) { return !_Str||!_Control?-1: strcspn(_Str,_Control); } wchar_t * nstring::error(const wchar_t *_ErrMsg) { return !_ErrMsg?nullptr: __wcserror(_ErrMsg); } char * nstring::error(const char *_ErrMsg) { return !_ErrMsg?nullptr: _strerror(_ErrMsg); } wchar_t * nstring::toLower(wchar_t *_Str) { return !_Str?nullptr: _wcslwr(_Str); } wchar_t * nstring::toUpper(wchar_t *_Str) { return !_Str?nullptr: _wcsupr(_Str); } char* nstring::toLower(char* _Str) { return !_Str ? nullptr : _strlwr(_Str); } char* nstring::toUpper(char* _Str) { return !_Str ? nullptr : _strupr(_Str); } const wchar_t * nstring::pbrk(const wchar_t *_Str,const wchar_t *_Control) { return !_Str||!_Control?nullptr:!_Str?nullptr:!_Control?nullptr: wcspbrk(_Str,_Control); } const char * nstring::pbrk(const char *_Str,const char *_Control) { return !_Str||!_Control?nullptr:!_Str?nullptr:!_Control?nullptr: strpbrk(_Str,_Control); } wchar_t * nstring::rev(wchar_t *_Str) { return !_Str?nullptr: _wcsrev(_Str); } char * nstring::rev(char *_Str) { return !_Str?nullptr: _strrev(_Str); } int nstring::toInt(wchar_t *_Str) { return !_Str?0:_wtol(_Str); } int nstring::toInt64(wchar_t* _Str) { return !_Str ? 0 : _wtoll(_Str); } double nstring::toDouble(wchar_t* _Str) { return !_Str ? 0 : ::_wtof(_Str); } int nstring::toInt(char *_Str) { return !_Str?0:atol(_Str); } int nstring::toInt64(char* _Str) { return !_Str ? 0 : atoll(_Str); } double nstring::toDouble(char* _Str) { return !_Str ? 0 : atof(_Str); } wchar_t * nstring::toWStr(int val) { wchar_t buf[64]; _ltow_s(val,buf,10); return _wcsdup(buf); } wchar_t * nstring::toWStr(double val) { wchar_t buf[64]; swprintf_s(buf,L"%f",val); return _wcsdup(buf); } wchar_t * nstring::toWStr(int val,wchar_t* buffer, int maxLen) { _ltow_s(val,buffer,maxLen,10); return buffer; } wchar_t * nstring::toWStr(double val,wchar_t* buffer, int maxLen) { swprintf_s(buffer,maxLen,L"%f",val); return buffer; } wchar_t* nstring::toWStr(LPARAM val) { wchar_t buf[64]; //swprintf_s(buf,L"%l64d",(__int64)val); _i64tow_s((long long)val, buf, 64, 10); return _wcsdup(buf); } wchar_t* nstring::toWStr(LPARAM val,wchar_t* buffer, int maxLen) { _i64tow_s((long long)val, buffer, maxLen, 10); //swprintf_s(buffer,maxLen,L"%l64d",(__int64)val); return buffer; } wchar_t* nstring::trim(wchar_t* pstr) { if (!pstr)return 0; wchar_t* p = pstr; while (p && p[0] == ' ' || p[0] == '\t' || p[0] == '\n')p++; p = _wcsdup(p); int nlen = (int)wcslen(p); while (nlen > 1 && p[nlen - 1] == ' ' || p[nlen - 1] == '\t' || p[nlen - 1] == '\n')nlen--; p[nlen] = 0; return p; } wchar_t* nstring::ltrim(wchar_t* pstr) { if (!pstr)return 0; wchar_t* p = pstr; while (p && p[0] == ' ' || p[0] == '\t' || p[0] == '\n')p++; return _wcsdup(p);; } wchar_t* nstring::rtrim(wchar_t* pstr) { if (!pstr)return 0; wchar_t* p = _wcsdup(pstr); int nlen = (int)wcslen(p); while (nlen > 1 && p[nlen - 1] == ' ' || p[nlen - 1] == '\t' || p[nlen - 1] == '\n')nlen--; p[nlen] = 0; return p; } char* nstring::trim(char* pstr) { if (!pstr)return 0; char* p = pstr; while (p && p[0] == ' ' || p[0] == '\t' || p[0] == '\n')p++; p = _strdup(p); int nlen = (int)strlen(p); while (nlen > 1 && p[nlen - 1] == ' ' || p[nlen - 1] == '\t' || p[nlen - 1] == '\n')nlen--; p[nlen] = 0; return p; } char* nstring::ltrim(char* pstr) { if (!pstr)return 0; char* p = pstr; while (p && p[0] == ' ' || p[0] == '\t' || p[0] == '\n')p++; return _strdup(p);; } char* nstring::rtrim(char* pstr) { if (!pstr)return 0; char* p = _strdup(pstr); int nlen = (int)strlen(p); while (nlen > 1 && p[nlen - 1] == ' ' || p[nlen - 1] == '\t' || p[nlen - 1] == '\n')nlen--; p[nlen] = 0; return p; } wchar_t* nstring::trim_(wchar_t* pstr,wchar_t* dest) { if (!pstr)return 0; wchar_t* p = pstr; while (p && p[0] == ' ' || p[0] == '\t' || p[0] == '\n')p++; wcscpy(dest,p); p = dest; int nlen = (int)wcslen(p); while (nlen > 1 && p[nlen - 1] == ' ' || p[nlen - 1] == '\t' || p[nlen - 1] == '\n')nlen--; p[nlen] = 0; return p; } wchar_t* nstring::ltrim_(wchar_t* pstr, wchar_t* dest) { if (!pstr)return 0; wchar_t* p = pstr; while (p && p[0] == ' ' || p[0] == '\t' || p[0] == '\n')p++; wcscpy(dest, p); return dest; } wchar_t* nstring::rtrim_(wchar_t* pstr, wchar_t* dest) { if (!pstr)return 0; wchar_t* p = dest; int nlen = (int)wcslen(p); while (nlen > 1 && p[nlen - 1] == ' ' || p[nlen - 1] == '\t' || p[nlen - 1] == '\n')nlen--; p[nlen] = 0; return p; }