当前位置: 技术问答>linux和unix
Linux下某些字符串操作函数没有对应的Unicode版本,有替代函数可用吗?
来源: 互联网 发布时间:2015-09-01
本文导语: 正在做一段代码的移植工作,从windows到linux,其中用到了很多VC自己定义的字符串函数,比如_tcslen,_stprintf等,这些函数在Linux上都有对应的单字节版本,但我现在需要它们的unicode(多字节)版本。man了一把发现大多...
正在做一段代码的移植工作,从windows到linux,其中用到了很多VC自己定义的字符串函数,比如_tcslen,_stprintf等,这些函数在Linux上都有对应的单字节版本,但我现在需要它们的unicode(多字节)版本。man了一把发现大多数函数有unicode版,但有些还是找不到。我把对应表写在下面:
#if defined UNICODE || defined _UNICODE
typedef wchar_t TCHAR;
#define _T(x) L ## x
#define _ttoi // 没有unicode版本
#define _ttoi64 // 没有unicode版本
#define _ttol // 没有unicode版本
#define _sntprintf swprintf
#define _stprintf // 没有unicode版本
#define _tcscat wcscat
#define _tcscmp wcscmp
#define _tcslen wcslen
#define _tcstod wcstod
#define _tcstol wcstol
#else
typedef char TCHAR;
#define _T(x) x
#define _ttoi atoi
#define _ttoi64 atoll
#define _ttol atol
#define _sntprintf snprintf
#define _stprintf sprintf
#define _tcscat strcat
#define _tcscmp strcmp
#define _tcslen strlen
#define _tcstod strtod
#define _tcstol strtol
#endif
那几个空着的#define就是没有unicode版本的函数。那位大侠能告诉我有没有替代的函数,还是根本没有要自己实现,万分感激。
#if defined UNICODE || defined _UNICODE
typedef wchar_t TCHAR;
#define _T(x) L ## x
#define _ttoi // 没有unicode版本
#define _ttoi64 // 没有unicode版本
#define _ttol // 没有unicode版本
#define _sntprintf swprintf
#define _stprintf // 没有unicode版本
#define _tcscat wcscat
#define _tcscmp wcscmp
#define _tcslen wcslen
#define _tcstod wcstod
#define _tcstol wcstol
#else
typedef char TCHAR;
#define _T(x) x
#define _ttoi atoi
#define _ttoi64 atoll
#define _ttol atol
#define _sntprintf snprintf
#define _stprintf sprintf
#define _tcscat strcat
#define _tcscmp strcmp
#define _tcslen strlen
#define _tcstod strtod
#define _tcstol strtol
#endif
那几个空着的#define就是没有unicode版本的函数。那位大侠能告诉我有没有替代的函数,还是根本没有要自己实现,万分感激。
|
微软的MSDN里面说,如果一个函数前面加了下划线,那么则是M$自己扩展的函数……
这样说来的确某些函数应该是没有unicode版本的
这样说来的确某些函数应该是没有unicode版本的