📄 tstring.cpp
字号:
/************************************************************************
模快名: moxu 公共类库
功能: 创建新线程
完成日期: 2007-10-20
作者: 许 培 Xu Pei(Email/MSN: peimoxu@163.com)
本代码可以自由使用,但因使用本代码造成的后果,本人不承担任何责任
************************************************************************/
#include "stdafx.h"
#include "TString.h"
#include "ScopeGuard.h"
#define iswspace(_c) ( iswctype(_c,_SPACE) )
namespace moxu
{
TString Str::Format(LPCTSTR str, ...)
{
va_list args;
va_start(args, str);
int len = _vsctprintf(str, args) + 1;
LPTSTR pStr = new TCHAR[len];
if(pStr == NULL)
throw _T("Alloc memory error");
ScopeGuard sg = MakeArrayGuard(pStr);
_vstprintf(pStr, str, args);
va_end(args);
return pStr;
}
TString& Str::ToUpper(TString& str)
{
_tcsupr((TCHAR*)str.c_str());
return str;
}
TString& Str::ToLower(TString& str)
{
_tcslwr((TCHAR*)str.c_str());
return str;
}
TString Str::TrimLeft(TString& str)
{
TCHAR* pStr = (TCHAR*)str.c_str();
while(*pStr && _istspace(*pStr)) pStr++;
return pStr;
};
TString& Str::TrimRigth(TString& str)
{
size_t size = str.size();
while(size && _istspace(str[size-1])) str[--size] = 0;
return str;
};
TString Str::Trim(TString& str)
{
return TrimLeft(TrimRigth(str));
}
std::string Str::TtoA(LPCTSTR tStr)
{
#ifdef _UNICODE
DWORD mappingFlag = WC_COMPOSITECHECK | WC_SEPCHARS;
int strSize = WideCharToMultiByte(CP_ACP, mappingFlag, tStr, -1, NULL, 0, NULL, NULL);
char *ch = new char[strSize];
ScopeGuard sg = MakeArrayGuard(ch);
WideCharToMultiByte(CP_ACP, mappingFlag, tStr, -1, ch, strSize, NULL, NULL);
return ch;
#else
return tStr;
#endif
}
TString Str::AtoT(LPCSTR str)
{
#ifdef _UNICODE
DWORD mappingFlag = MB_PRECOMPOSED;
int strSize = MultiByteToWideChar(CP_THREAD_ACP, mappingFlag, str, -1, NULL, 0);
TCHAR* ch = new TCHAR[strSize];
ScopeGuard sg = MakeArrayGuard(ch);
MultiByteToWideChar(CP_THREAD_ACP, mappingFlag, str, -1, ch, strSize);
std::wstring tStr(ch);
return ch;
#else
return str;
#endif
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -