#include "StdAfx.h" #include "TDbfString.h" namespace { std::string wchar_t_To_string(const wchar_t *pszStr) { int nLen = WideCharToMultiByte(CP_OEMCP, NULL, pszStr, -1, NULL, 0, NULL, FALSE); char *p = new char[nLen+1]; if (!p) return std::string(""); WideCharToMultiByte (CP_OEMCP, NULL, pszStr, -1, p, nLen, NULL, FALSE); std::string str(p); delete [] p; p = NULL; return str; } std::string TCHAR_To_string(const TCHAR *pszStr) { #if defined(UNICODE) || defined(_UNICODE) return wchar_t_To_string(pszStr); #else return pszStr; #endif } std::string CString_To_string(const CString& str) { const TCHAR *pszStr = str; return TCHAR_To_string(pszStr); } std::string wstring_To_string(const std::wstring &str) { return wchar_t_To_string(str.c_str()); } } ////////////////////////////////////////////////////////////////////////// CTDbfString::CTDbfString( const TCHAR *pszStr ) { m_str = TCHAR_To_string(pszStr); } CTDbfString::CTDbfString( const std::string &str ) { m_str = str; } CTDbfString::CTDbfString( const CString &str ) { m_str = CString_To_string(str); } CTDbfString::CTDbfString( const std::wstring &str ) { m_str = wstring_To_string(str); } CTDbfString::CTDbfString( const CTDbfString &str ) { m_str = str.toString(); } #if !defined(UNICODE) && !defined(_UNICODE) CTDbfString::CTDbfString( const wchar_t *pszStr ) { m_str = wchar_t_To_string(pszStr); } CTDbfString& CTDbfString::operator=( const wchar_t *pszstr ) { m_str = wchar_t_To_string(pszstr); return *this; } #endif ////////////////////////////////////////////////////////////////////////// CTDbfString& CTDbfString::operator=( const CTDbfString &str ) { m_str = str.toString(); return *this; } CTDbfString& CTDbfString::operator=( const CString &str ) { m_str = CString_To_string(str); return *this; } CTDbfString& CTDbfString::operator=( const std::string &str ) { m_str = str; return *this; } CTDbfString& CTDbfString::operator=( const std::wstring &str ) { m_str = wstring_To_string(str); return *this; } CTDbfString& CTDbfString::operator=( const TCHAR *pszstr ) { m_str = TCHAR_To_string(pszstr); return *this; }