TCHAR與C語言string.h的對應關係
阿新 • • 發佈:2019-02-09
Windows C程式設計過程中,常常涉及到字串處理的問題。
如果你想用純C來進行Windows開發,那麼你可以用C語言的標準庫,幸運的是C語言標準庫已經加入了Unicode的支援,例如:
strchr()------------------wcschr() wcs是wide char string的縮寫,原來相應的字串操作函式只需要將str替換為wcs即可。 就現在來說,一般都用Unicode了,但是當需要在ANSI和Unicode兩個環境之間切換的時候,TCHAR的作用就顯的尤為重要了。 使用TCHAR的話就省掉了分別使用兩種函式的麻煩了。 如果使用VS來進行專案建立的時候,你會發現幾個有趣的函式。沒有定義Unicode後,#define _tmain WinMain()被執行。
CreateWindow()----------也是一個巨集,位於WinUser.h
定義Unicode後,#define CreateWindow CreateWindowW
沒有定義,#define CreateWindow CreateWindowA
可以說Win32 SDK的程式碼被Unicode分為兩個部分。Unidode和ANSI,在WinUser.h中,很多函式都是這樣定義的。Windows SDK通過巨集來遮蔽函式的差異。
總而言之,如果你要想一致(表面上)的處理Unicode和ANSI,那麼就要使用TCHAR及相關的字串處理類。
巨集定義------------替換,在預處理階段。
typedef------------重新命名,編譯階段。
以下是TCHAR相關的字串處理函式(也是巨集)
Generic-text routine name | SBCS (_UNICODE & MBCS not defined) | _MBCS defined | _UNICODE defined |
_cgetts | _cgets | _cgets | _cgetws |
_cgetts_s | _cgets_s | _cgets_s | _cgetws_s |
_cputts | _cputs | _cputs | _cputws |
_fgettc | fgetc | fgetc | fgetwc |
_fgettchar | _fgetchar | _fgetchar | _fgetwchar |
_fgetts | fgets | fgets | fgetws |
_fputtc | fputc | fputc | fputwc |
_fputtchar | _fputchar | _fputchar | _fputwchar |
_fputts | fputs | fputs | fputws |
_ftprintf | fprintf | fprintf | fwprintf |
_ftprintf_s | fprintf_s | fprintf_s | fwprintf_s |
_ftscanf | fscanf | fscanf | fwscanf |
_ftscanf_s | fscanf_s | fscanf_s | fwscanf_s |
_gettc | getc | getc | getwc |
_gettch | _getch | _getch | _getwch |
_gettchar | getchar | getchar | getwchar |
_gettche | _getche | _getche | _getwche |
_getts | gets | gets | getws |
_getts_s | gets_s | gets_s | getws_s |
_istalnum | isalnum | _ismbcalnum | iswalnum |
_istalpha | isalpha | _ismbcalpha | iswalpha |
_istascii | isascii | isascii | iswascii |
_istcntrl | iscntrl | iscntrl | iswcntrl |
_istdigit | isdigit | _ismbcdigit | iswdigit |
_istgraph | isgraph | _ismbcgraph | iswgraph |
_istlead | Always returns false | _ismbblead | Always returns false |
_istleadbyte | Always returns false | isleadbyte | Always returns false |
_istlegal | Always returns true | _ismbclegal | Always returns true |
_istlower | islower | _ismbclower | iswlower |
_istprint | isprint | _ismbcprint | iswprint |
_istpunct | ispunct | _ismbcpunct | iswpunct |
_istspace | isspace | _ismbcspace | iswspace |
_istupper | isupper | _ismbcupper | iswupper |
_istxdigit | isxdigit | isxdigit | iswxdigit |
_itot | _itoa | _itoa | _itow |
_itot_s | _itoa_s | _itoa_s | _itow_s |
_ltot | _ltoa | _ltoa | _ltow |
_ltot_s | _ltoa_s | _ltoa_s | _ltow_s |
_puttc | putc | putc | putwc |
_puttch | _putch | _putch | _putwch |
_puttchar | putchar | putchar | putwchar |
_putts | puts | puts | _putws |
_sctprintf | _scprintf | _scprintf | _scwprintf |
_sntprintf | _snprintf | _snprintf | _snwprintf |
_sntprintf_s | _snprintf_s | _snprintf_s | _snwprintf_s |
_sntscanf | _snscanf | _snscanf | _snwscanf |
_sntscanf_s | _snscanf_s | _snscanf_s | _snwscanf_s |
_stprintf | sprintf | sprintf | swprintf |
_stprintf_s | sprintf_s | sprintf_s | swprintf_s |
_stscanf | sscanf | sscanf | swscanf |
_stscanf_s | sscanf_s | sscanf_s | swscanf_s |
_taccess | _access | _access | _waccess |
_taccess_s | _access_s | _access_s | _waccess_s |
_tasctime | asctime | asctime | _wasctime |
_tasctime_s | asctime_s | asctime_s | _wasctime_s |
_tccmp | Maps to macro or inline function | _mbsncmp | Maps to macro or inline function |
_tccpy | Maps to macro or inline function | _mbccpy | Maps to macro or inline function |
_tccpy_s | strcpy_s | _mbccpy_s | wcscpy_s |
_tchdir | _chdir | _chdir | _wchdir |
_tclen | Maps to macro or inline function | _mbclen | Maps to macro or inline function |
_tchmod | _chmod | _chmod | _wchmod |
_tcprintf | _cprintf | _cprintf | _cwprintf |
_tcprintf_s | _cprintf_s | _cprintf_s | _cwprintf_s |
_tcreat | _creat | _creat | _wcreat |
_tcscanf | _cscanf | _cscanf | _cwscanf |
_tcscanf_s | _cscanf_s | _cscanf_s | _cwscanf_s |
_tcscat | strcat | _mbscat | wcscat |
_tcscat_s | strcat_s | _mbscat_s | wcscat_s |
_tcschr | strchr | _mbschr | wcschr |
_tcsclen | strlen | _mbslen | wcslen |
_tcsclen_s | strlen_s | _mbslen_s | wcslen_s |
_tcscmp | strcmp | _mbscmp | wcscmp |
_tcscoll | strcoll | _mbscoll | wcscoll |
_tcscpy | strcpy | _mbscpy | wcscpy |
_tcscpy_s | strcpy_s | _mbscpy_s | wcscpy_s |
_tcscspn | strcspn | _mbscspn | wcscspn |
_tcsdec | _strdec | _mbsdec | _wcsdec |
_tcsdup | _strdup | _mbsdup | _wcsdup |
_tcserror | strerror | strerror | _wcserror |
_tcserror_s | strerror_s | strerror_s | _wcserror_s |
_tcsftime | strftime | strftime | wcsftime |
_tcsicmp | _stricmp | _mbsicmp | _wcsicmp |
_tcsicoll | _stricoll | _mbsicoll | _wcsicoll |
_tcsinc | _strinc | _mbsinc | _wcsinc |
_tcslen | strlen | strlen | wcslen |
_tcslen_s | strlen_s | strlen_s | wcslen_s |
_tcslwr | _strlwr | _mbslwr | _wcslwr |
_tcslwr_s | _strlwr_s | _mbslwr_s | _wcslwr_s |
_tcsnbcnt | _strncnt | _mbsnbcnt | _wcsncnt |
_tcsncat | strncat | _mbsnbcat | wcsncat |
_tcsncat_s | strncat_s | _mbsnbcat_s | wcsncat_s |
_tcsnccat | strncat | _mbsncat | wcsncat |
_tcsnccmp | strncmp | _mbsncmp | wcsncmp |
_tcsnccmp_s | strncmp_s | _mbsncmp_s | wcsncmp_s |
_tcsnccoll | _strncoll | _mbsncoll | _wcsncoll |
_tcsncmp | strncmp | _mbsnbcmp | wcsncmp |
_tcsnccnt | _strncnt | _mbsnccnt | _wcsncnt |
_tcsnccpy | strncpy | _mbsncpy | wcsncpy |
_tcsnccpy_s | strncpy_s | _mbsncpy_s | wcsncpy_s |
_tcsncicmp | _strnicmp | _mbsnicmp | _wcsnicmp |
_tcsncicoll | _strnicoll | _mbsnicoll | _wcsnicoll |
_tcsncpy | strncpy | _mbsnbcpy | wcsncpy |
_tcsncpy_s | strncpy_s | _mbsnbcpy_s | wcsncpy_s |
_tcsncset | _strnset | _mbsnset | _wcsnset |
_tcsnextc | _strnextc | _mbsnextc | _wcsnextc |
_tcsnicmp | _strnicmp | _mbsnbicmp | _wcsnicmp |
_tcsnicoll | _strnicoll | _mbsnbicoll | _wcsnicoll |
_tcsninc | _strninc | _mbsninc | _wcsninc |
_tcsnccnt | _strncnt | _mbsnccnt | _wcsncnt |
_tcsnset | _strnset | _mbsnbset | _wcsnset |
_tcspbrk | strpbrk | _mbspbrk | wcspbrk |
_tcsspnp | _strspnp | _mbsspnp | _wcsspnp |
_tcsrchr | strrchr | _mbsrchr | wcsrchr |
_tcsrev | _strrev | _mbsrev | _wcsrev |
_tcsset | _strset | _mbsset | _wcsset |
_tcsspn | strspn | _mbsspn | wcsspn |
_tcsstr | strstr | _mbsstr | wcsstr |
_tcstod | strtod | strtod | wcstod |
_tcstoi64 | _strtoi64 | _strtoi64 | _wcstoi64 |
_tcstok | strtok | _mbstok | wcstok |
_tcstok_s | strtok_s | _mbstok_s | wcstok_s |
_tcstol | strtol | strtol | wcstol |
_tcstoui64 | _strtoui64 | _strtoui64 | _wcstoui64 |
_tcstoul | strtoul | strtoul | wcstoul |
_tcsupr | _strupr | _mbsupr | _wcsupr |
_tcsupr_s | _strupr_s | _mbsupr_s | _wcsupr_s |
_tcsxfrm | strxfrm | strxfrm | wcsxfrm |
_tctime | ctime | ctime | _wctime |
_tctime_s | ctime_s | ctime_s | _wctime_s |
_tctime32 | _ctime32 | _ctime32 | _wctime32 |
_tctime32_s | _ctime32_s | _ctime32_s | _wctime32_s |
_tctime64 | _ctime64 | _ctime64 | _wctime64 |
_tctime64_s | _ctime64_s | _ctime64_s | _wctime64_s |
_texecl | _execl | _execl | _wexecl |
_texecle | _execle | _execle | _wexecle |
_texeclp | _execlp | _execlp | _wexeclp |
_texeclpe | _execlpe | _execlpe | _wexeclpe |
_texecv | _execv | _execv | _wexecv |
_texecve | _execve | _execve | _wexecve |
_texecvp | _execvp | _execvp | _wexecvp |
_texecvpe | _execvpe | _execvpe | _wexecvpe |
_tfdopen | _fdopen | _fdopen | _wfdopen |
_tfindfirst | _findfirst | _findfirst | _wfindfirst |
_tfindnext | _findnext | _findnext | _wfindnext |
_tfindnext32 | _findnext32 | _findnext32 | _wfindnext32 |
_tfindnext64 | _findnext64 | _findnext64 | _wfindnext64 |
_tfindnexti64 | _findnexti64 | _findnexti64 | _wfindnexti64 |
_tfindnexti6432 | _findnexti6432 | _findnexti6432 | _wfindnexti6432 |
_tfindnext32i64 | _findnext32i64 | _findnext32i64 | _wfindnext32i64 |
_tfopen | fopen | fopen | _wfopen |
_tfopen_s | fopen_s | fopen_s | _wfopen_s |
_tfreopen | freopen | freopen | _wfreopen |
_tfreopen_s | freopen_s | freopen_s | _wfreopen_s |
_tfsopen | _fsopen | _fsopen | _wfsopen |
_tfullpath | _fullpath | _fullpath | _wfullpath |
_tgetcwd | _getcwd | _getcwd | _wgetcwd |
_tgetdcwd | _getdcwd | _getdcwd | _wgetdcwd |
_tgetenv | getenv | getenv | _wgetenv |
_tgetenv_s | getenv_s | getenv_s | _wgetenv_s |
_tmain | main | main | wmain |
_tmakepath | _makepath | _makepath | _wmakepath |
_tmakepath_s | _makepath_s | _makepath_s | _wmakepath_s |
_tmkdir | _mkdir | _mkdir | _wmkdir |
_tmktemp | _mktemp | _mktemp | _wmktemp |
_tmktemp_s | _mktemp_s | _mktemp_s | _wmktemp_s |
_topen | _open | _open | _wopen |
_topen_s | _open_s | _open_s | _wopen_s |
_totlower | tolower | _mbctolower | towlower |
_totupper | toupper | _mbctoupper | towupper |
_tperror | perror | perror | _wperror |
_tpopen | _popen | _popen | _wpopen |
_tprintf | printf | printf | wprintf |
_tprintf_s | printf_s | printf_s | wprintf_s |
_tputenv | _putenv | _putenv | _wputenv |
_tputenv_s | _putenv_s | _putenv_s | _wputenv_s |
_tremove | remove | remove | _wremove |
_trename | rename | rename | _wrename |
_trmdir | _rmdir | _rmdir | _wrmdir |
_tsearchenv | _searchenv | _searchenv | _wsearchenv |
_tsearchenv_s | _searchenv_s | _searchenv_s | _wsearchenv_s |
_tscanf | scanf | scanf | wscanf |
_tscanf_s | scanf_s | scanf_s | wscanf_s |
_tsetlocale | setlocale | setlocale | _wsetlocale |
_tsopen | _sopen | _sopen | _wsopen |
_tsopen_s | _sopen_s | _sopen_s | _wsopen_s |
_tspawnl | _spawnl | _spawnl | _wspawnl |
_tspawnle | _spawnle | _spawnle | _wspawnle |
_tspawnlp | _spawnlp | _spawnlp | _wspawnlp |
_tspawnlpe | _spawnlpe | _spawnlpe | _wspawnlpe |
_tspawnv | _spawnv | _spawnv | _wspawnv |
_tspawnve | _spawnve | _spawnve | _wspawnve |
_tspawnvp | _spawnvp | _spawnvp | _wspawnvp |
_tspawnvpe | _spawnvpe | _spawnvpe | _wspawnvpe |
_tsplitpath | _splitpath | _splitpath | _wsplitpath |
_tstat | _stat | _stat | _wstat |
_tstat32 | _stat32 | _stat32 | _wstat32 |
_tstati32 | _stati32 | _stati32 | _wstati32 |
_tstat64 | _stat64 | _stat64 | _wstat64 |
_tstati64 | _stati64 | _stati64 | _wstati64 |
_tstof | atof | atof | _wtof |
_tstoi | atoi | atoi | _wtoi |
_tstoi64 | _atoi64 | _atoi64 | _wtoi64 |
_tstol | atol | atol | _wtol |
_tstrdate | _strdate | _strdate | _wstrdate |
_tstrdate_s | _strdate_s | _strdate_s | _wstrdate_s |
_tstrtime | _strtime | _strtime | _wstrtime |
_tstrtime_s | _strtime_s | _strtime_s | _wstrtime_s |
_tsystem | system | system | _wsystem |
_ttempnam | _tempnam | _tempnam | _wtempnam |
_ttmpnam | tmpnam | tmpnam | _wtmpnam |
_ttmpnam_s | tmpnam_s | tmpnam_s | _wtmpnam_s |
_ttoi | atoi | atoi | _wtoi |
_ttoi64 | _atoi64 | _atoi64 | _wtoi64 |
_ttol | atol | atol | _wtol |
_tunlink | _unlink | _unlink | _wunlink |
_tutime | _utime | _utime | _wutime |
_tutime32 | _utime32 | _utime32 | _wutime32 |
_tutime64 | _utime64 | _utime64 | _wutime64 |
_tWinMain | WinMain | WinMain | wWinMain |
_ui64tot | _ui64toa | _ui64toa | _ui64tow |
_ui64tot_s | _ui64toa_s | _ui64toa_s | _ui64tow_s |
_ultot | _ultoa | _ultoa | _ultow |
_ultot_s | _ultoa_s | _ultoa_s | _ultow_s |
_ungettc | ungetc | ungetc | ungetwc |
_ungettch | _ungetch | _ungetch | _ungetwch |
_vftprintf | vfprintf | vfprintf | vfwprintf |
_vftprintf_s | vfprintf_s | vfprintf_s | vfwprintf_S |
_vsctprintf | _vscprintf | _vscprintf | _vscwprintf |
_vsctprintf_s | _vscprintf_s | _vscprintf_s | _vscwprintf_S |
_vsntprintf | _vsnprintf | _vsnprintf | _vsnwprintf |
_vsntprintf_s | _vsnprintf_s | _vsnprintf_s | _vsnwprintf_s |
_vstprintf | vsprintf | vsprintf | vswprintf |
_vstprintf_s | vsprintf_s | vsprintf_s | vswprintf_s |
_vtprintf | vprintf | vprintf | vwprintf |
_vtprintf_s | vprintf_s | vprintf_s | vwprintf_s |