You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
2.1 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#pragma once
#include <windows.h>
#include <string>
int SEU_Rand(int ran); //自定义的随机数发生器
/************************************************************************/
/*
三种编码格式互转
UTF-8 <===> GB2312
∧ ∧
| |
| |
Unicode
UTF-8和GB2312可以用strlen来计算长度
Unicode要wsclen(p)*2=字符串长度. 因为unicode一个ansi字符也占2字节. 一个汉字也占2字节.
*/
/************************************************************************/
//UTF-8到GB2312的转换,返回的指针要delete
extern AFX_EXT_API char* UTF8_To_GB2312(const char* utf8);
extern AFX_EXT_API void UTF8_To_GB2312(const char* utf8, char* &gbOut);
//string版
extern AFX_EXT_API std::string UTF8_To_GB2312(const std::string &utf8);
//GB2312到UTF-8的转换,返回的指针要delete
extern AFX_EXT_API char* GB2312_To_UTF8(const char* gb2312);
//string版
extern AFX_EXT_API std::string GB2312_To_UTF8(const std::string &gb2312);
//参数2是为了方便知道unicode的字符串长度.也可以用wsclen来计算该函数返回的unicode char*指针.来统计unicode的字符数.x2就是字符串长度
extern AFX_EXT_API char* UTF8_To_Unicode(const char* utf8, int & len);
//string版
extern AFX_EXT_API std::wstring UTF8_To_Unicode(const std::string &utf8);
extern AFX_EXT_API char* Unicode_To_UTF8(const char* unicode);
//string版
extern AFX_EXT_API std::string Unicode_To_UTF8(const std::wstring &unicode);
//等同于MByteToWChar. 内部调用了MByteToWChar
extern AFX_EXT_API char* GB2312_To_Unicode(const char* gb2312, int & len);
//string版
extern AFX_EXT_API std::wstring GB2312_To_Unicode(const std::string &gb2312);
//等同与WCharToMByte 内部调用了WCharToMByte
extern AFX_EXT_API char* Unicode_To_GB2312(const char* unicode);
//string版
extern AFX_EXT_API std::string Unicode_To_GB2312(const std::wstring &unicode);
/*
宽字符转多字节
注意返回的字符串不用后要delete
其实就是unicode 转ansi/gb2312
*/
extern AFX_EXT_API CHAR* WCharToMByte(WCHAR* lpcwszStr);
/*
多字节转宽字符
注意返回的字符串不用后要delete
*/
extern AFX_EXT_API WCHAR* MByteToWChar(CHAR* lpcstr);
//
//static inline std::string convWith(const std::wstring &src);
//
//static inline std::wstring convWith(const std::string &src);