DragonNest/Client/DnDummyClient/stdafx.cpp
2024-12-19 09:48:26 +08:00

201 lines
No EOL
4.5 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// stdafx.cpp : source file that includes just the standard includes
// DnDummyClient.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
// TODO: reference any additional headers you need in STDAFX.H
// and not in this file
bool ToMultiString(IN std::wstring& wstr, OUT std::string& str )
{
static char szBuff[8192] = "";
ZeroMemory(szBuff, sizeof(char)*8192);
WideCharToMultiByte( CP_ACP, 0, wstr.c_str(), -1, szBuff, 8192, NULL, NULL );
str = szBuff;
return true;
}
bool ToWideString(IN std::string& str, OUT std::wstring& wstr )
{
static WCHAR wszBuff[8192] = L"";
ZeroMemory(wszBuff, sizeof(WCHAR)*8192);
MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, wszBuff, 8192 );
wstr = wszBuff;
return true;
}
bool ToMultiString(IN WCHAR* wstr, OUT std::string& str )
{
return ToMultiString(std::wstring(wstr), str);
}
bool ToWideString(IN CHAR* str, OUT std::wstring& wstr )
{
return ToWideString(std::string(str), wstr);
}
void ToLowerA(std::string& str)
{
std::transform(str.begin(), str.end(), str.begin(), towlower);
}
void ToLowerW(std::wstring& str)
{
std::transform(str.begin(), str.end(), str.begin(), tolower);
}
void ToUpperA(std::string& str)
{
std::transform(str.begin(), str.end(), str.begin(), toupper);
}
void ToUpperW(std::wstring& str)
{
std::transform(str.begin(), str.end(), str.begin(), towupper);
}
std::wstring FormatW( const WCHAR* fmt, ... )
{
static WCHAR s_wszBuffer[8192] = L"";
ZeroMemory(s_wszBuffer, sizeof(WCHAR) * 8192);
va_list args;
va_start( args, fmt );
_vsnwprintf_s( s_wszBuffer, 8192-1, fmt, args );
va_end( args );
s_wszBuffer[8192-1] = 0;
return std::wstring(s_wszBuffer);
}
std::string FormatA( const CHAR* fmt, ... )
{
static CHAR s_szBuffer[8192] = "";
ZeroMemory(s_szBuffer, sizeof(CHAR) * 8192);
va_list args;
va_start( args, fmt );
_vsnprintf_s( s_szBuffer, 8192-1, fmt, args );
va_end( args );
s_szBuffer[8192-1] = 0;
return std::string(s_szBuffer);
}
std::wstring GetTimeString(time_t time)
{
struct tm* _tm = NULL;
_tm = localtime(&(time));
std::wstring strTime = FormatW( _T("%04d<34><64>%02d<32><64>%02d<32><64> %02d<32><64>%02d<32><64>%02d<32><64>"), 1900+_tm->tm_year, _tm->tm_mon+1, _tm->tm_mday, _tm->tm_hour, _tm->tm_min, _tm->tm_sec);
return strTime;
}
void RemoveStringA(std::string& str, std::string& del)
{
while (true)
{
std::string::size_type npos = str.find(del);
if ( npos < str.size() )
{
str.erase( npos, del.size());
}
else
break;
}
}
void TokenizeW( const std::wstring& str, std::vector<std::wstring>& tokens, const std::wstring& delimiters /* = L" "*/ )
{
// <20><> ù <20><><EFBFBD>ڰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
std::wstring::size_type lastPos = str.find_first_not_of( delimiters, 0 );
// <20><><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD> <20>ƴ<EFBFBD> ù <20><><EFBFBD>ڸ<EFBFBD> ã<>´<EFBFBD>
std::wstring::size_type pos = str.find_first_of( delimiters, lastPos );
while( std::wstring::npos != pos || std::wstring::npos != lastPos )
{
// token<65><6E> ã<><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> vector<6F><72> <20>߰<EFBFBD><DFB0>Ѵ<EFBFBD>
tokens.push_back( str.substr( lastPos, pos - lastPos ) );
// <20><><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD> <20>پ<EFBFBD><D9BE>Ѵ´<D1B4>. "not_of"<22><> <20><><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD>
lastPos = str.find_first_not_of( delimiters, pos );
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD> <20>ƴ<EFBFBD> <20><><EFBFBD>ڸ<EFBFBD> ã<>´<EFBFBD>
pos = str.find_first_of( delimiters, lastPos );
}
}
#if defined(_FILELOG_PACKET) || defined(_FILELOG_SPOS)
bool g_bInvalidDisconnect = false;
void _WriteLog( int nLogType, const char *szStr, ... )
{
#ifdef _FILELOG_PACKET
if( nLogType != 1 ) return;
#elif _FILELOG_SPOS
if( nLogType != 0 ) return;
#endif
_WriteLogA(szStr);
}
void _WriteLogA( const char *szStr, ... )
{
va_list list;
char szTemp[65535];
va_start( list, szStr );
vsprintf_s( szTemp, szStr, list );
std::wstring wStr;
ToWideString( szTemp, wStr );
g_Log.Log( LogType::_FILELOG, const_cast<wchar_t*>(wStr.c_str()) );
va_end( list );
}
void _WriteDisplayLog( int Logtype , const char *szStr , ... )
{
va_list list;
char szTemp[20000];
char szString[10000];
va_start( list, szStr );
switch( Logtype )
{
case 1:
sprintf_s(szTemp,"[Info] ");
break;
case 2:
sprintf_s(szTemp,"[Warning] ");
break;
case 3:
sprintf_s(szTemp,"[Error] ");
break;
case 4:
sprintf_s(szTemp,"[Debug] ");
break;
default:
sprintf_s(szTemp,"[Undefine] ");
break;
}
vsprintf_s( szString, szStr, list );
strcat_s(szString,"\n");
strcat_s(szTemp,szString);
std::wstring wStr;
ToWideString( szTemp, wStr );
g_Log.Log( LogType::_FILELOG, const_cast<wchar_t*>(wStr.c_str()) );
OutputDebug(szTemp);
va_end( list );
}
#else
void _WriteLog( int nLogType, const char *szStr, ... ){}
void _WriteDisplayLog( const char *szStr, ... ){}
void _WriteLogA( const char *szStr, ... ) {}
#endif