Floating Functions
Go Up to Unicode for C++ Index
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, in particular in regards to using the default string type, UnicodeString
.
Example of Writing Portable Code Using _TCHAR
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.
List of Floating Definitions from tchar.h
The following table is derived from the tchar.h header file:
- The char/ANSI column lists the ANSI version of the floating functions that are appropriate when
_TCHAR
is mapped tochar
. - The wchar_t/UNICODE column lists the UNICODE version of the floating functions that are appropriate when
_TCHAR
is mapped towchar_t
. - The _TCHAR/Portable column lists the portable version of the floating functions, which maps to the appropriate function (either the ANSI or UNICODE version) as determined by the current setting of the
_TCHAR maps to
mapping option.
The recommended functions to use in C++Builder are those listed in the _TCHAR/Portable column, coupled with the use of _TCHAR
(rather than char
or wchar_t
) in your code.
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 |