diff options
-rw-r--r-- | c/util.h | 22 |
1 files changed, 20 insertions, 2 deletions
@@ -12,12 +12,30 @@ inline int Swprintf(wchar_t (&buf)[N], const wchar_t* const fmt, T... xs) return _snwprintf_s(buf, N, _TRUNCATE, fmt, xs...); } +/* Format static narrow string. */ +template<size_t N, typename... T> +inline int Sprintf(char (&buf)[N], const char* const fmt, T... xs) +{ + return _snprintf_s(buf, N, _TRUNCATE, fmt, xs...); +} + +/* Copy to static wide string buffer. */ +template <size_t N> +inline wchar_t* Wcscpy(wchar_t (&dst)[N], const wchar_t* const src) +{ + const size_t len = std::min(N, wcslen(src)+1); + memcpy(dst, src, len*sizeof(wchar_t)); + dst[len-1] = 0; + return dst; +} + /* Copy to static narrow string buffer. */ template <size_t N> inline char* Strcpy(char (&dst)[N], const char* const src) { - memcpy(dst, src, std::min(N, strlen(src))); - dst[N-1] = 0; + const size_t len = std::min(N, strlen(src)+1); + memcpy(dst, src, len); + dst[len-1] = 0; return dst; } |