RAD Studio
ContentsIndex
PreviousUpNext
Floating Functions

This topic describes how to write portable code that correctly uses the floating definitions of RTL functions. The list of floating functions is useful for choosing the correct variant of a function.

RTL functions are available in either ANSI/MBCS or Unicode definitions. For example, the RTL function strlen can be used in ANSI/MBCS mode as follows:

void StorePersonData(const char* name)
{
   PersistToDB(name, strlen(name));
}

A more portable way of writing this code is:

void StorePersonData(const _TCHAR* name)
{
   PersistToDB(name, _tcstrlen(name));
}

This example assumes that PersistToDB has a Unicode version. Note that for functions that are not going to change or float, you should use either char or wchar_t.

The following table is derived from the tchar.h header file. The char/ANSI column lists the floating functions that are appropriate when _TCHAR is mapped to char, the ANSI version of the function. The wchar_t/UNICODE column lists the functions for wchar_t, the UNICODE version of the function. The _TCHAR/Portable column lists the portable version of the function, which maps to the appropriate function (either the ANSI or UNICODE version) as determined by the current setting of the _TCHAR mapping option.  

Floating Function Definitions from tchar.h  

char / ANSI 
wchar_t / UNICODE 
_TCHAR / Portable 
_access  
_waccess  
_taccess  
_atoi64  
_wtoi64  
_tstoi64  
_atoi64  
_wtoi64  
_ttoi64  
_cgets  
_cgetws  
cgetts  
_chdir  
_wchdir  
_tchdir  
_chmod  
_wchmod  
_tchmod  
_cprintf  
_cwprintf  
_tcprintf  
_cputs  
_cputws  
_cputts  
_creat  
_wcreat  
_tcreat  
_cscanf  
_cwscanf  
_tcscanf  
_ctime64  
_wctime64  
_tctime64  
_execl  
_wexecl  
_texecl  
_execle  
_wexecle  
_texecle  
_execlp  
_wexeclp  
_texeclp  
_execlpe  
_wexeclpe  
_texeclpe  
_execv  
_wexecv  
_texecv  
_execve  
_wexecve  
_texecve  
_execvp  
_wexecvp  
_texecvp  
_execvpe  
_wexecvpe  
_texecvpe  
_fdopen  
_wfdopen  
_tfdopen  
_fgetchar  
_fgetwchar  
_fgettchar  
_findfirst  
_wfindfirst  
_tfindfirst  
_findnext64  
_wfindnext64  
_tfindnext64  
_findnext  
_wfindnext  
_tfindnext  
_findnexti64  
_wfindnexti64  
_tfindnexti64  
_fputchar  
_fputwchar  
_fputtchar  
_fsopen  
_wfsopen  
_tfsopen  
_fullpath  
_wfullpath  
_tfullpath  
_getch  
_getwch  
_gettch  
_getche  
_getwche  
_gettche  
_getcwd  
_wgetcwd  
_tgetcwd  
_getdcwd  
_wgetdcwd  
_tgetdcwd  
_ltoa  
_ltow  
_ltot  
_makepath  
_wmakepath  
_tmakepath  
_mkdir  
_wmkdir  
_tmkdir  
_mktemp  
_wmktemp  
_tmktemp  
_open  
_wopen  
_topen  
_popen  
_wpopen  
_tpopen  
_putch  
_putwch  
_puttch  
_putenv  
_wputenv  
_tputenv  
_rmdir  
_wrmdir  
_trmdir  
_scprintf  
_scwprintf  
_sctprintf  
_searchenv  
_wsearchenv  
_tsearchenv  
_snprintf  
_snwprintf  
_sntprintf  
_snscanf  
_snwscanf  
_sntscanf  
_sopen  
_wsopen  
_tsopen  
_spawnl  
_wspawnl  
_tspawnl  
_spawnle  
_wspawnle  
_tspawnle  
_spawnlp  
_wspawnlp  
_tspawnlp  
_spawnlpe  
_wspawnlpe  
_tspawnlpe  
_spawnv  
_wspawnv  
_tspawnv  
_spawnve  
_wspawnve  
_tspawnve  
_spawnvp  
_wspawnvp  
_tspawnvp  
_spawnvpe  
_wspawnvpe  
_tspawnvpe  
_splitpath  
_wsplitpath  
_tsplitpath  
_stat64  
_wstat64  
_tstat64  
_stat  
_wstat  
_tstat  
_stati64  
_wstati64  
_tstati64  
_strdate  
_wstrdate  
_tstrdate  
_strdec  
_wcsdec  
_tcsdec  
_strdup  
_wcsdup  
_tcsdup  
_stricmp  
_wcsicmp  
_tcsicmp  
_stricoll  
_wcsicoll  
_tcsicoll  
_strinc  
_wcsinc  
_tcsinc  
_strlwr  
_wcslwr  
_tcslwr  
_strncnt  
_wcsncnt  
_tcsnbcnt  
_strncnt  
_wcsncnt  
_tcsnccnt  
_strncnt  
_wcsncnt  
_tcsnccnt  
_strncoll  
_wcsncoll  
_tcsnccoll  
_strnextc  
_wcsnextc  
_tcsnextc  
_strnicmp  
_wcsnicmp  
_tcsncicmp  
_strnicmp  
_wcsnicmp  
_tcsnicmp  
_strnicoll  
_wcsnicoll  
_tcsncicoll  
_strnicoll  
_wcsnicoll  
_tcsnicoll  
_strninc  
_wcsninc  
_tcsninc  
_strnset  
_wcsnset  
_tcsncset  
_strnset  
_wcsnset  
_tcsnset  
_strrev  
_wcsrev  
_tcsrev  
_strset  
_wcsset  
_tcsset  
_strspnp  
_wcsspnp  
_tcsspnp  
_strtime  
_wstrtime  
_tstrtime  
_strtoi64  
_wcstoi64  
_tcstoi64  
_strtoui64  
_wcstoui64  
_tcstoui64  
_strupr  
_wcsupr  
_tcsupr  
_tempnam  
_wtempnam  
_ttempnam  
_ui64toa  
_ui64tow  
_ui64tot  
_ultoa  
_ultow  
_ultot  
_ungetch  
_ungetwch  
_ungettch  
_unlink  
_wunlink  
_tunlink  
_utime64  
_wutime64  
_tutime64  
_utime  
_wutime  
_tutime  
_vscprintf  
_vscwprintf  
_vsctprintf  
_vsnprintf  
_vsnwprintf  
_vsntprintf  
asctime  
_wasctime  
_tasctime  
atof  
_wtof  
_tstof  
atoi  
_wtoi  
_tstoi  
atoi  
_wtoi  
_ttoi  
atol  
_wtol  
_tstol  
atol  
_wtol  
_ttol  
ctime  
_wctime  
_tctime  
fgetc  
fgetwc  
_fgettc  
fgets  
fgetws  
_fgetts  
fopen  
_wfopen  
_tfopen  
fprintf  
fwprintf  
_ftprintf  
fputc  
fputwc  
_fputtc  
fputs  
fputws  
_fputts  
freopen  
_wfreopen  
_tfreopen  
fscanf  
fwscanf  
_ftscanf  
getc  
getwc  
_gettc  
getchar  
getwchar  
_gettchar  
getenv  
_wgetenv  
_tgetenv  
gets  
getws  
_getts  
isalnum  
iswalnum  
_istalnum  
isalpha  
iswalpha  
_istalpha  
isascii  
iswascii  
_istascii  
iscntrl  
iswcntrl  
_istcntrl  
isdigit  
iswdigit  
_istdigit  
isgraph  
iswgraph  
_istgraph  
islower  
iswlower  
_istlower  
isprint  
iswprint  
_istprint  
ispunct  
iswpunct  
_istpunct  
isspace  
iswspace  
_istspace  
isupper  
iswupper  
_istupper  
isxdigit  
iswxdigit  
_istxdigit  
main  
wmain  
_tmain  
perror  
_wperror  
_tperror  
printf  
wprintf  
_tprintf  
putc  
putwc  
_puttc  
putchar  
putwchar  
_puttchar  
puts  
_putws  
_putts  
remove  
_wremove  
_tremove  
rename  
_wrename  
_trename  
scanf  
wscanf  
_tscanf  
setlocale  
_wsetlocale  
_tsetlocale  
sprintf  
swprintf  
_stprintf  
sscanf  
swscanf  
_stscanf  
strcat  
wcscat  
_tcscat  
strchr  
wcschr  
_tcschr  
strcmp  
wcscmp  
_tcscmp  
strcoll  
wcscoll  
_tcscoll  
strcpy  
wcscpy  
_tcscpy  
strcspn  
wcscspn  
_tcscspn  
strerror  
_wcserror  
_tcserror  
strftime  
wcsftime  
_tcsftime  
strlen  
wcslen  
_tcsclen  
strlen  
wcslen  
_tcslen  
strncat  
wcsncat  
_tcsncat  
strncat  
wcsncat  
_tcsnccat  
strncmp  
wcsncmp  
_tcsnccmp  
strncmp  
wcsncmp  
_tcsncmp  
strncpy  
wcsncpy  
_tcsnccpy  
strncpy  
wcsncpy  
_tcsncpy  
strpbrk  
wcspbrk  
_tcspbrk  
strrchr  
wcsrchr  
_tcsrchr  
strspn  
wcsspn  
_tcsspn  
strstr  
wcsstr  
_tcsstr  
strtod  
wcstod  
_tcstod  
strtok  
wcstok  
_tcstok  
strtol  
wcstol  
_tcstol  
strtoul  
wcstoul  
_tcstoul  
strxfrm  
wcsxfrm  
_tcsxfrm  
system  
_wsystem  
_tsystem  
tmpnam  
_wtmpnam  
_ttmpnam  
tolower  
towlower  
_totlower  
toupper  
towupper  
_totupper  
ungetc  
ungetwc  
_ungettc  
vfprintf  
vfwprintf  
_vftprintf  
vprintf  
vwprintf  
_vtprintf  
vsprintf  
vswprintf  
_vstprintf  
WinMain  
wWinMain  
_tWinMain  
Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!