UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MicrosoftPlatformString.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5// HEADER_UNIT_SKIP - Included through other header
6
7#include "Misc/Char.h"
8#if PLATFORM_USE_GENERIC_STRING_IMPLEMENTATION
10#else
12#endif
14#include <stdarg.h>
15#include <stdio.h>
16#include <stdlib.h>
17#include <string.h>
18#include <tchar.h>
19
24#pragma warning(push)
25#pragma warning(disable : 4996) // 'function' was declared deprecated (needed for the secure string functions)
26#pragma warning(disable : 4995) // 'function' was declared deprecated (needed for the secure string functions)
27
29#if PLATFORM_USE_GENERIC_STRING_IMPLEMENTATION
30 public FGenericWidePlatformString
31#else
33#endif
34{
35#if PLATFORM_USE_GENERIC_STRING_IMPLEMENTATION
36 using Super = FGenericWidePlatformString;
37#else
39#endif
40
44
45#if !PLATFORM_USE_GENERIC_STRING_IMPLEMENTATION
46 template <typename CharType>
47 static CharType* Strupr(CharType* Dest, SIZE_T DestCount)
48 {
49 for (CharType* Char = Dest; *Char && DestCount > 0; Char++, DestCount--)
50 {
52 }
53 return Dest;
54 }
55#endif
56
61 {
62 return (WIDECHAR*)_tcscpy(Dest, Src);
63 }
64
65 // This version was deprecated because Strcpy taking a size field does not match the CRT strcpy, and on some platforms the size field was being ignored.
66 // If the memzeroing causes a performance problem, request a new function StrcpyTruncate.
67 UE_DEPRECATED(5.6, "Use Strncpy instead. Note that Strncpy has a behavior difference from Strcpy: it memzeroes the entire DestCount-sized buffer after the end of string.")
72
73 static inline WIDECHAR* Strncpy(WIDECHAR* Dest, const WIDECHAR* Src, SIZE_T MaxLen)
74 {
75 _tcsncpy(Dest, Src, MaxLen-1);
76 Dest[MaxLen-1] = 0;
77 return Dest;
78 }
79
81 {
82 return (WIDECHAR*)_tcscat(Dest, Src);
83 }
84
85 // This version was deprecated because Strcat taking a size field does not match the CRT strcat, and on some platforms the size field was being ignored.
86 UE_DEPRECATED(5.6, "Use Strncat instead. !!NOTE THAT STRNCAT takes SrcLen rather than DestCount. You must call Strncat(Dest, Src, DestCount - Strlen(Dest) - 1).")
88 {
89 return (WIDECHAR*)_tcscat(Dest, Src);
90 }
91
92 static inline WIDECHAR* Strncat(WIDECHAR* Dest, const WIDECHAR* Src, SIZE_T SrcLen)
93 {
94 // The Microsoft library has _tcscat_s but not a strncat equivalent. strncat takes SrcLen
95 // but tcscat_s takes size of the destination string buffer (which must also contain null terminator).
96 // We therefore provide our own implementation.
97 if (!SrcLen || !*Src)
98 {
99 return Dest;
100 }
101 WIDECHAR* NewDest = Dest + Strlen(Dest);
103 do
104 {
105 *NewDest++ = *Src++;
107 } while (AppendedCount < SrcLen && *Src);
108 *NewDest = 0;
109 return Dest;
110 }
111
113 {
114 return _tcscmp(String1, String2);
115 }
116
118 {
119 return _tcsncmp( String1, String2, Count );
120 }
121
123 {
124 return _tcslen( String );
125 }
126
131
133 {
134 return _tcsstr( String, Find );
135 }
136
138 {
139 return _tcschr( String, C );
140 }
141
143 {
144 return _tcsrchr( String, C );
145 }
146
148 {
149 return _tstoi( String );
150 }
151
153 {
154 return _tstoi64( String );
155 }
156
158 {
159 return (float)_tstof( String );
160 }
161
163 {
164 return _tcstod( String, NULL );
165 }
166
167 static UE_FORCEINLINE_HINT int32 Strtoi( const WIDECHAR* Start, WIDECHAR** End, int32 Base )
168 {
169 return _tcstoul( Start, End, Base );
170 }
171
172 static UE_FORCEINLINE_HINT int64 Strtoi64( const WIDECHAR* Start, WIDECHAR** End, int32 Base )
173 {
174 return _tcstoi64( Start, End, Base );
175 }
176
178 {
179 return _tcstoui64( Start, End, Base );
180 }
181
186
187// Allow fallback to FGenericWidePlatformString::GetVarArgs when PLATFORM_USE_GENERIC_STRING_IMPLEMENTATION is set.
188#if PLATFORM_USE_GENERIC_STRING_IMPLEMENTATION
189 using Super::GetVarArgs;
190#else
192 {
193 int32 Result = vswprintf(Dest, DestSize, Fmt, ArgPtr);
194 return Result;
195 }
196#endif
197
202 {
203 return (ANSICHAR*)strcpy(Dest, Src);
204 }
205
206 // This version was deprecated because Strcpy taking a size field does not match the CRT strcpy, and on some platforms the size field was being ignored.
207 // If the memzeroing causes a performance problem, request a new function StrcpyTruncate.
208 UE_DEPRECATED(5.6, "Use Strncpy instead. Note that Strncpy has a behavior difference from Strcpy: it memzeroes the entire DestCount-sized buffer after the end of string.")
210 {
211 return (ANSICHAR*)strcpy(Dest, Src);
212 }
213
214 static inline ANSICHAR* Strncpy(ANSICHAR* Dest, const ANSICHAR* Src, SIZE_T MaxLen)
215 {
216 strncpy(Dest, Src, MaxLen);
217 Dest[MaxLen-1] = 0;
218 return Dest;
219 }
220
222 {
223 return (ANSICHAR*)strcat( Dest, Src );
224 }
225
226 // This version was deprecated because Strcat taking a size field does not match the CRT strcat, and on some platforms the size field was being ignored.
227 UE_DEPRECATED(5.6, "Use Strncat instead. !!NOTE THAT STRNCAT takes SrcLen rather than DestSize. You must call Strncat(Dest, Src, DestCount - Strlen(Dest) - 1).")
229 {
230 return (ANSICHAR*)strcat(Dest, Src);
231 }
232
234 {
235 return (ANSICHAR*)strncat(Dest, Src, SrcLen);
236 }
237
239 {
240 return strcmp(String1, String2);
241 }
242
244 {
245 return strncmp( String1, String2, Count );
246 }
247
249 {
250 return strlen( String );
251 }
252
257
259 {
260 return strstr(String, Find);
261 }
262
264 {
265 return strchr(String, C);
266 }
267
269 {
270 return strrchr(String, C);
271 }
272
274 {
275 return atoi( String );
276 }
277
279 {
280 return _strtoi64( String, NULL, 10 );
281 }
282
284 {
285 return (float)atof( String );
286 }
287
289 {
290 return atof( String );
291 }
292
293 static UE_FORCEINLINE_HINT int32 Strtoi( const ANSICHAR* Start, ANSICHAR** End, int32 Base )
294 {
295 return strtol( Start, End, Base );
296 }
297
298 static UE_FORCEINLINE_HINT int64 Strtoi64( const ANSICHAR* Start, ANSICHAR** End, int32 Base )
299 {
300 return _strtoi64( Start, End, Base );
301 }
302
304 {
305 return _strtoui64( Start, End, Base );
306 }
307
312
314 {
315 int32 Result = vsnprintf( Dest, DestSize, Fmt, ArgPtr );
316 return (Result != -1 && Result < (int32)DestSize) ? Result : -1;
317 }
318
324 {
325 return _tcslen( (const WIDECHAR*)String );
326 }
327
329 {
330 return _tcsnlen( (const WIDECHAR*)String, StringSize );
331 }
332
337 {
338 return (UTF8CHAR*)Strcpy((ANSICHAR*)Dest, (const ANSICHAR*)Src);
339 }
340
341 // This version was deprecated because Strcpy taking a size field does not match the CRT strcpy, and on some platforms the size field was being ignored.
342 // If the memzeroing causes a performance problem, request a new function StrcpyTruncate.
343 UE_DEPRECATED(5.6, "Use Strncpy instead. Note that Strncpy has a behavior difference from Strcpy: it memzeroes the entire DestCount-sized buffer after the end of string.")
350
352 {
353 return (UTF8CHAR*)Strncpy((ANSICHAR*)Dest, (const ANSICHAR*)Src, MaxLen);
354 }
355
357 {
358 return (UTF8CHAR*)Strcat((ANSICHAR*)Dest, (const ANSICHAR*)Src);
359 }
360
361 // This version was deprecated because Strcat taking a size field does not match the CRT strcat, and on some platforms the size field was being ignored.
362 UE_DEPRECATED(5.6, "Use Strncat instead. !!NOTE THAT STRNCAT takes SrcLen rather than DestSize. You must call Strncat(Dest, Src, DestCount - Strlen(Dest) - 1).")
364 {
366 return (UTF8CHAR*)Strcat((ANSICHAR*)Dest, DestCount, (const ANSICHAR*)Src);
368 }
369
371 {
372 return (UTF8CHAR*)Strncat((ANSICHAR*)Dest, (const ANSICHAR*)Src, SrcLen);
373 }
374
376 {
377 return Strcmp((const ANSICHAR*)String1, (const ANSICHAR*)String2);
378 }
379
381 {
382 return Strncmp((const ANSICHAR*)String1, (const ANSICHAR*)String2, Count);
383 }
384
386 {
387 return Strlen((const ANSICHAR*)String);
388 }
389
394
396 {
397 return (const UTF8CHAR*)Strstr((const ANSICHAR*)String, (const ANSICHAR*)Find);
398 }
399
401 {
402 return (const UTF8CHAR*)Strchr((const ANSICHAR*)String, (ANSICHAR)C);
403 }
404
406 {
407 return (const UTF8CHAR*)Strrchr((const ANSICHAR*)String, (ANSICHAR)C);
408 }
409
411 {
412 return Atoi((const ANSICHAR*)String);
413 }
414
416 {
417 return Atoi64((const ANSICHAR*)String);
418 }
419
421 {
422 return Atof((const ANSICHAR*)String);
423 }
424
426 {
427 return Atod((const ANSICHAR*)String);
428 }
429
431 {
432 return Strtoi((const ANSICHAR*)Start, (ANSICHAR**)End, Base);
433 }
434
436 {
437 return Strtoi64((const ANSICHAR*)Start, (ANSICHAR**)End, Base);
438 }
439
441 {
442 return Strtoui64((const ANSICHAR*)Start, (ANSICHAR**)End, Base);
443 }
444
449
451 {
452 return GetVarArgs((ANSICHAR*)Dest, DestSize, *(const ANSICHAR**)&Fmt, ArgPtr);
453 }
454};
455
456#pragma warning(pop) // 'function' was was declared deprecated (needed for the secure string functions)
#define NULL
Definition oodle2base.h:134
int vswprintf(TCHAR *dst, int count, const TCHAR *fmt, va_list arg)
ENGINE_API void StringSize(const UFont *Font, int32 &XL, int32 &YL, FStringView Text)
Definition Canvas.cpp:1181
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::CHAR16 UCS2CHAR
A 16-bit character containing a UCS2 (Unicode, 16-bit, fixed-width) code unit, used for compatibility...
Definition Platform.h:1139
FPlatformTypes::SIZE_T SIZE_T
An unsigned integer the same size as a pointer, the same as UPTRINT.
Definition Platform.h:1150
FPlatformTypes::WIDECHAR WIDECHAR
A wide character. Normally a signed type.
Definition Platform.h:1133
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::UTF8CHAR UTF8CHAR
An 8-bit character containing a UTF8 (Unicode, 8-bit, variable-width) code unit.
Definition Platform.h:1137
#define UE_FORCEINLINE_HINT
Definition Platform.h:723
FPlatformTypes::ANSICHAR ANSICHAR
An ANSI character. Normally a signed type.
Definition Platform.h:1131
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
@ Char
Character type.
static CORE_API int32 Stricmp(const ANSICHAR *String1, const ANSICHAR *String2)
Definition GenericPlatformStricmp.cpp:93
static CORE_API int32 Strnicmp(const ANSICHAR *String1, const ANSICHAR *String2, SIZE_T Count)
Definition GenericPlatformStricmp.cpp:107
Definition GenericPlatformString.h:61
static CORE_API int32 Strncmp(const ANSICHAR *String1, const ANSICHAR *String2, SIZE_T Count)
Definition GenericPlatformString.cpp:719
Definition MicrosoftPlatformString.h:34
static CharType * Strupr(CharType *Dest, SIZE_T DestCount)
Definition MicrosoftPlatformString.h:47
static UE_FORCEINLINE_HINT const ANSICHAR * Strchr(const ANSICHAR *String, ANSICHAR C)
Definition MicrosoftPlatformString.h:263
static PRAGMA_ENABLE_DEPRECATION_WARNINGS UE_FORCEINLINE_HINT UTF8CHAR * Strncat(UTF8CHAR *Dest, const UTF8CHAR *Src, SIZE_T SrcLen)
Definition MicrosoftPlatformString.h:370
static UE_FORCEINLINE_HINT ANSICHAR * Strncat(ANSICHAR *Dest, const ANSICHAR *Src, SIZE_T SrcLen)
Definition MicrosoftPlatformString.h:233
static UE_FORCEINLINE_HINT const UTF8CHAR * Strstr(const UTF8CHAR *String, const UTF8CHAR *Find)
Definition MicrosoftPlatformString.h:395
static UE_FORCEINLINE_HINT int64 Strtoi64(const ANSICHAR *Start, ANSICHAR **End, int32 Base)
Definition MicrosoftPlatformString.h:298
static UE_FORCEINLINE_HINT int32 Strcmp(const ANSICHAR *String1, const ANSICHAR *String2)
Definition MicrosoftPlatformString.h:238
static UE_FORCEINLINE_HINT const UTF8CHAR * Strrchr(const UTF8CHAR *String, UTF8CHAR C)
Definition MicrosoftPlatformString.h:405
static UE_FORCEINLINE_HINT int32 Strnlen(const WIDECHAR *String, SIZE_T StringSize)
Definition MicrosoftPlatformString.h:127
static UE_FORCEINLINE_HINT int64 Atoi64(const WIDECHAR *String)
Definition MicrosoftPlatformString.h:152
static UE_FORCEINLINE_HINT double Atod(const WIDECHAR *String)
Definition MicrosoftPlatformString.h:162
static UE_FORCEINLINE_HINT int32 Atoi(const ANSICHAR *String)
Definition MicrosoftPlatformString.h:273
static UE_FORCEINLINE_HINT WIDECHAR * Strcpy(WIDECHAR *Dest, const WIDECHAR *Src)
Definition MicrosoftPlatformString.h:60
static UE_FORCEINLINE_HINT uint64 Strtoui64(const WIDECHAR *Start, WIDECHAR **End, int32 Base)
Definition MicrosoftPlatformString.h:177
static UE_FORCEINLINE_HINT const WIDECHAR * Strrchr(const WIDECHAR *String, WIDECHAR C)
Definition MicrosoftPlatformString.h:142
UE_DEPRECATED(5.6, "Use Strncat instead. !!NOTE THAT STRNCAT takes SrcLen rather than DestSize. You must call Strncat(Dest, Src, DestCount - Strlen(Dest) - 1).") static UE_FORCEINLINE_HINT ANSICHAR *Strcat(ANSICHAR *Dest
static UE_FORCEINLINE_HINT const WIDECHAR * Strchr(const WIDECHAR *String, WIDECHAR C)
Definition MicrosoftPlatformString.h:137
static UE_FORCEINLINE_HINT float Atof(const ANSICHAR *String)
Definition MicrosoftPlatformString.h:283
static WIDECHAR * Strncat(WIDECHAR *Dest, const WIDECHAR *Src, SIZE_T SrcLen)
Definition MicrosoftPlatformString.h:92
static UE_FORCEINLINE_HINT uint64 Strtoui64(const ANSICHAR *Start, ANSICHAR **End, int32 Base)
Definition MicrosoftPlatformString.h:303
static UE_FORCEINLINE_HINT int32 Strcmp(const WIDECHAR *String1, const WIDECHAR *String2)
Definition MicrosoftPlatformString.h:112
static int32 GetVarArgs(ANSICHAR *Dest, SIZE_T DestSize, const ANSICHAR *&Fmt, va_list ArgPtr)
Definition MicrosoftPlatformString.h:313
UE_DEPRECATED(5.6, "Use Strncat instead. !!NOTE THAT STRNCAT takes SrcLen rather than DestSize. You must call Strncat(Dest, Src, DestCount - Strlen(Dest) - 1).") static inline UTF8CHAR *Strcat(UTF8CHAR *Dest
static UE_FORCEINLINE_HINT int32 Strtoi(const WIDECHAR *Start, WIDECHAR **End, int32 Base)
Definition MicrosoftPlatformString.h:167
static UE_FORCEINLINE_HINT ANSICHAR * Strcat(ANSICHAR *Dest, const ANSICHAR *Src)
Definition MicrosoftPlatformString.h:221
static UE_FORCEINLINE_HINT int32 Strlen(const UCS2CHAR *String)
Definition MicrosoftPlatformString.h:323
static UE_FORCEINLINE_HINT int32 Atoi(const WIDECHAR *String)
Definition MicrosoftPlatformString.h:147
static UE_FORCEINLINE_HINT double Atod(const UTF8CHAR *String)
Definition MicrosoftPlatformString.h:425
static UE_FORCEINLINE_HINT int32 GetVarArgs(UTF8CHAR *Dest, SIZE_T DestSize, const UTF8CHAR *&Fmt, va_list ArgPtr)
Definition MicrosoftPlatformString.h:450
static UE_FORCEINLINE_HINT int32 Strncmp(const WIDECHAR *String1, const WIDECHAR *String2, SIZE_T Count)
Definition MicrosoftPlatformString.h:117
SIZE_T DestCount
Definition MicrosoftPlatformString.h:87
static UE_FORCEINLINE_HINT const UTF8CHAR * Strchr(const UTF8CHAR *String, UTF8CHAR C)
Definition MicrosoftPlatformString.h:400
static UE_FORCEINLINE_HINT int64 Strtoi64(const WIDECHAR *Start, WIDECHAR **End, int32 Base)
Definition MicrosoftPlatformString.h:172
SIZE_T const WIDECHAR * Src
Definition MicrosoftPlatformString.h:88
static ANSICHAR * Strncpy(ANSICHAR *Dest, const ANSICHAR *Src, SIZE_T MaxLen)
Definition MicrosoftPlatformString.h:214
static UE_FORCEINLINE_HINT uint64 Strtoui64(const UTF8CHAR *Start, UTF8CHAR **End, int32 Base)
Definition MicrosoftPlatformString.h:440
static UE_FORCEINLINE_HINT ANSICHAR * Strtok(ANSICHAR *StrToken, const ANSICHAR *Delim, ANSICHAR **Context)
Definition MicrosoftPlatformString.h:308
static UE_FORCEINLINE_HINT ANSICHAR * Strcpy(ANSICHAR *Dest, const ANSICHAR *Src)
Definition MicrosoftPlatformString.h:201
static int32 GetVarArgs(WIDECHAR *Dest, SIZE_T DestSize, const WIDECHAR *&Fmt, va_list ArgPtr)
Definition MicrosoftPlatformString.h:191
UE_DEPRECATED(5.6, "Use Strncat instead. !!NOTE THAT STRNCAT takes SrcLen rather than DestCount. You must call Strncat(Dest, Src, DestCount - Strlen(Dest) - 1).") static UE_FORCEINLINE_HINT WIDECHAR *Strcat(WIDECHAR *Dest
static UE_FORCEINLINE_HINT float Atof(const UTF8CHAR *String)
Definition MicrosoftPlatformString.h:420
static UE_FORCEINLINE_HINT int64 Atoi64(const UTF8CHAR *String)
Definition MicrosoftPlatformString.h:415
static UE_FORCEINLINE_HINT int64 Strtoi64(const UTF8CHAR *Start, UTF8CHAR **End, int32 Base)
Definition MicrosoftPlatformString.h:435
static UE_FORCEINLINE_HINT int32 Strncmp(const UTF8CHAR *String1, const UTF8CHAR *String2, SIZE_T Count)
Definition MicrosoftPlatformString.h:380
static UE_FORCEINLINE_HINT float Atof(const WIDECHAR *String)
Definition MicrosoftPlatformString.h:157
static UE_FORCEINLINE_HINT int32 Strnlen(const UCS2CHAR *String, SIZE_T StringSize)
Definition MicrosoftPlatformString.h:328
static UE_FORCEINLINE_HINT WIDECHAR * Strtok(WIDECHAR *StrToken, const WIDECHAR *Delim, WIDECHAR **Context)
Definition MicrosoftPlatformString.h:182
static UE_FORCEINLINE_HINT int32 Strcmp(const UTF8CHAR *String1, const UTF8CHAR *String2)
Definition MicrosoftPlatformString.h:375
static UE_FORCEINLINE_HINT int32 Strncmp(const ANSICHAR *String1, const ANSICHAR *String2, SIZE_T Count)
Definition MicrosoftPlatformString.h:243
static UE_FORCEINLINE_HINT const ANSICHAR * Strstr(const ANSICHAR *String, const ANSICHAR *Find)
Definition MicrosoftPlatformString.h:258
static UE_FORCEINLINE_HINT int32 Strtoi(const UTF8CHAR *Start, UTF8CHAR **End, int32 Base)
Definition MicrosoftPlatformString.h:430
static UE_FORCEINLINE_HINT const WIDECHAR * Strstr(const WIDECHAR *String, const WIDECHAR *Find)
Definition MicrosoftPlatformString.h:132
static UE_FORCEINLINE_HINT int64 Atoi64(const ANSICHAR *String)
Definition MicrosoftPlatformString.h:278
static UE_FORCEINLINE_HINT double Atod(const ANSICHAR *String)
Definition MicrosoftPlatformString.h:288
static WIDECHAR * Strncpy(WIDECHAR *Dest, const WIDECHAR *Src, SIZE_T MaxLen)
Definition MicrosoftPlatformString.h:73
static UE_FORCEINLINE_HINT int32 Strnlen(const ANSICHAR *String, SIZE_T StringSize)
Definition MicrosoftPlatformString.h:253
static UE_FORCEINLINE_HINT UTF8CHAR * Strncpy(UTF8CHAR *Dest, const UTF8CHAR *Src, SIZE_T MaxLen)
Definition MicrosoftPlatformString.h:351
static UE_FORCEINLINE_HINT int32 Strlen(const WIDECHAR *String)
Definition MicrosoftPlatformString.h:122
static UE_FORCEINLINE_HINT int32 Strtoi(const ANSICHAR *Start, ANSICHAR **End, int32 Base)
Definition MicrosoftPlatformString.h:293
static UE_FORCEINLINE_HINT WIDECHAR * Strcat(WIDECHAR *Dest, const WIDECHAR *Src)
Definition MicrosoftPlatformString.h:80
static UE_FORCEINLINE_HINT int32 Strnlen(const UTF8CHAR *String, SIZE_T StringSize)
Definition MicrosoftPlatformString.h:390
static UE_FORCEINLINE_HINT UTF8CHAR * Strcpy(UTF8CHAR *Dest, const UTF8CHAR *Src)
Definition MicrosoftPlatformString.h:336
static UE_FORCEINLINE_HINT UTF8CHAR * Strtok(UTF8CHAR *StrToken, const UTF8CHAR *Delim, UTF8CHAR **Context)
Definition MicrosoftPlatformString.h:445
static UE_FORCEINLINE_HINT int32 Atoi(const UTF8CHAR *String)
Definition MicrosoftPlatformString.h:410
static UE_FORCEINLINE_HINT const ANSICHAR * Strrchr(const ANSICHAR *String, ANSICHAR C)
Definition MicrosoftPlatformString.h:268
static UE_FORCEINLINE_HINT int32 Strlen(const ANSICHAR *String)
Definition MicrosoftPlatformString.h:248
static UE_FORCEINLINE_HINT UTF8CHAR * Strcat(UTF8CHAR *Dest, const UTF8CHAR *Src)
Definition MicrosoftPlatformString.h:356
static UE_FORCEINLINE_HINT int32 Strlen(const UTF8CHAR *String)
Definition MicrosoftPlatformString.h:385
static CharType ToUpper(CharType Char)
Definition Char.h:80