4.5.4 strcpy、wcscpy与_tcscpy
C++标准库函数提供了字符和字符串的操作函数,并提供了其UNICODE版本,如:
- char *strcpy(char *strDestination, const char *strSource);
- wchar_t *wcscpy(wchar_t *strDestination, const wchar_t *strSource);
wcscpy()即为strcpy()的宽字符版本,与_T类似的,Visual C++提供了类似的同名函数:
- #ifdef UNICODE
- #define _tcscpy wcscpy
- #else
- #define _tcscpy strcpy
- #endif
因此我们建议这样书写代码:
- TCHAR src[] = _T("学习C++");
- TCHAR dest[20];
- _tcscpy(dest, src);
比如,在使用printf()的时候,我会尝试使用_tprintf()。
同样的版本问题一样会困扰着main()函数:
- main( int argc, char *argv[ ], char *envp[ ]);
- wmain( int argc, wchar_t *argv[ ], wchar_t *envp[ ]);
再来看_tmain()的定义:
- #ifdef UNICODE
- #define _tmain wmain
- #define _tWinMain wWinMain
- #else
- #define _tmain main
- #define _tWinMain WinMain
- #endif
这就是为什么Win32控制台项目默认输出,提供一个_tmain()函数的缘故。