为了健壮程序的执行,并且满足ansi和unicode的处理,所有用到字符串的类型为:
string,一律使用tstring
char 一律用TCHAR 数组用TCHAR* 或者PTSTR
sizeof(szBuffer) 字符串大小要用_countof(szBuffer)
所有的字符串处理函数一律使用已_tcs开头的已_s结尾的安全函数,如果有_s的一定要用。
内存分配要用_tcsmalloc
在StdAfx.h中定义如下。
#ifdef _UNICODE
#define tstring wstring
#else
#define tstring string
#endif
string,一律使用tstring
char 一律用TCHAR 数组用TCHAR* 或者PTSTR
sizeof(szBuffer) 字符串大小要用_countof(szBuffer)
所有的字符串处理函数一律使用已_tcs开头的已_s结尾的安全函数,如果有_s的一定要用。
内存分配要用_tcsmalloc
在StdAfx.h中定义如下。
#ifdef _UNICODE
#define tstring wstring
#else
#define tstring string
#endif
#define _tcsmalloc(nCharacters) (TCHAR*)malloc(nCharacters * sizeof(TCHAR))
| 适应函数 | 多字节 | unicode | 解释 |
| _tcscat_s | strcat_s | wcscat_s | 字符串追加区分大小写 |
| _tcscpy_s | strcpy_s | wcscpy_s | 字符串拷贝区分大小写 |
| _tcserror_s | strerror_s | _wcserror_s | 获取系统错误信息或打印用户程序错误信息。 |
| _tscanf_s | scanf_s | wscanf_s | 格式输入函数 |
| _ftscanf_s | fscanf_s | fwscanf_s | 从一个流中执行格式化输入 |
| _stscanf_s | sscanf_s | swscanf_s | 从一个字符串中读进与指定格式相符的数据. |
| _sntscanf_s | _snscanf_s | _snwscanf_s | 一个指定长度的Reads设置数据从字符串中 |
| _tprintf_s | printf_s | wprintf_s | 产生格式化输出的函数 |
| _tcprintf_s | _cprintf_s | _cwprintf_s | 送格式化输出至屏幕 |
| _vtcprintf_s | _vcprintf_s | _vcwprintf_s | 编写格式化输出到控制台使用指针参数列表。 |
| _ftprintf_s | fprintf_s | fwprintf_s | 其作用是格式化输出到一个流/文件中; |
| _stprintf_s | sprintf_s | swprintf_s | 把格式化的数据写入某个字符串缓冲区。 |
| _sntprintf_s | _snprintf_s | _snwprintf_s | 将可变个参数(...)按照format格式化成字符串,然后将其复制到str中 |
| _vtprintf_s | vprintf_s | vwprintf_s | 编写格式化输出使用指针参数列表。 |
| _vftprintf_s | vfprintf_s | vfwprintf_s | 格式化的数据输出到指定的数据流中 |
| _vstprintf_s | vsprintf_s | vswprintf_s | 送格式化输出到串中 |
| _vsntprintf_s | _vsnprintf_s | _vsnwprintf_s | 用于像字符串中打印数据、数据格式用户自定义。 |
| _sctprintf | _scwprintf | 返回的格式字符串中的字符数。 | |
| _vsctprintf | _vscwprintf | 使用指针的参数列表,格式字符串中的字符数返回。 | |
| _tcscanf_s | _cwscanf_s | 从控制台读取格式的数据。 | |
| _fgetts | fgetws | 从流中读入字符串 | |
| _cgetts_s | _cgetws_s | 指定字节数读入 | |
| _putts | _putws | 输出字符串 | |
| _getts_s | _getws_s | 从流中读入字符串 | |
| _tcsncat_s | wcsncat_s | 字符串追加指定大小 | |
| _tcsncpy_s | wcsncpy_s | 字符串拷贝指定大小 | |
| _tcstok_s | wcstok_s | 分解字符串为一组字符串。 | |
| _tcsnset_s | _wcsnset_s | 初始化為指定的字元字串的字元 | |
| _tcsset_s | _wcsset_s | 初始化為指定的字元字串的字元 | |
| _tcscmp | wcscmp | 比较两个字符串是否相同 | |
| _tcsicmp | _wcsicmp | 比较两个字符串是否相同,区分大小写 | |
| _tcsnccmp,_tcsncmp | wcsncmp | 指定字节数比较字符串 | |
| _tcsncicmp,_tcsnicmp | _wcsnicmp | 指定字节数比较字符串,不区分大小写 | |
| _tcscoll | wcscoll | 字符的字符串比较 | |
| _tcsicoll | _wcsicoll | 字符的字符串比较,不区分大小写 | |
| _tcsnccoll,_tcsncoll | _wcsncoll | 比较字符串使用的语言环境特定的信息。 | |
| _tcsncicoll,_tcsnicoll | _wcsnicoll | 比较字符串使用的语言环境特定的信息,不区分大小写 | |
| _tcsftime | wcsftime | 字符串转换成日期和时间 | |
| _tctime_s | _wctime_s | 把日期和时间转换为字符串 | |
| _tfopen_s | _wfopen_s | 打开文件 | |
| _tfreopen_s | _wfreopen_s | 打开指定路径的文件 | |
| _tstat | _wstat | 获取文件大小 |
本文介绍了在程序设计中如何正确处理ANSI和Unicode字符串,包括推荐使用的字符串类型、安全函数及内存分配方法等。通过定义TCHAR宏来兼容不同编码下的字符串操作,并列举了一系列以_tcs开头的安全字符串处理函数。
4351

被折叠的 条评论
为什么被折叠?



