CStringConversion.h
#pragma once
#include "afx.h"
#include <string>
using namespace std;
//define
#define ZERO_FLOAT 0.000002
//缩进两个Tab
#define DefaultIndent 2
namespace CStringCon{
CString ConCString(float value);
CString ConCString(double value);
CString ConCString(int value);
CString ConCStringChar(int value);
CString ConCString(byte value);
CString ConCString(long value);
CString ConCString(DWORD value);
CString ConCString(WORD value);
CString ConCString(const char* pStr);
CString ConCString(char* pStr);
CString ConCString(const string& src);
CString ConCStringTabNumber(int level = DefaultIndent);
CString ConCStringScoreCap(float value);
void Sample();
};
CStringConversion.cpp
#include "StdAfx.h"
#include "CStringConversion.h"
//CStringConversion
namespace CStringCon{
CString ConCStringTabNumber(int level)
{
CString strTab = _T("");
for (int i = 0; i < level; i++)
{
strTab += _T("\t");//;/_T("\t");
}
return strTab;
}
CString ConCString(DWORD value)
{
CString caption;
caption.Format(_T("%u"),value);
return caption;
}
CString ConCString( WORD value )
{
CString caption;
caption.Format(_T("%u"),value);
return caption;
}
CString ConCString( const char* pStr )
{
CString strResult = _T("");
#ifdef _UNICODE
USES_CONVERSION;
strResult.Format(_T("%s"), A2W(pStr));
#else
strResult.Format(_T("%s"), (pStr));
#endif
return strResult;
}
CString ConCString(int value)
{
CString caption;
caption.Format(_T("%d"),value);
return caption;
}
CString ConCString(char* pStr)
{
CString strResult = _T("");
#ifdef _UNICODE
USES_CONVERSION;
strResult.Format(_T("%s"), A2W(pStr));
#else
strResult.Format(_T("%s"), (pStr));
#endif
return strResult;
}
CString ConCString(const string& src)
{
const char* pStr = src.c_str();
CString strResult = _T("");
#ifdef _UNICODE
USES_CONVERSION;
strResult.Format(_T("%s"), A2W(pStr));
#else
strResult.Format(_T("%s"), (pStr));
#endif
return strResult;
}
CString ConCStringScoreCap(float value)
{
if(value < -ZERO_FLOAT)
{
if(value < -1 - ZERO_FLOAT)
return _T("incomplete");
else
return _T(" ");
}
float tempvalue = (value + 0.5f);
float tempvalue1 = (value * 10.0f +0.5f) / 10.0f;
float tempvalue2 = (value * 100.0f +0.5f) / 100.0f;
float tempvalue3 = (value * 1000.0f +0.5f) / 1000.0f;
CString caption = _T("");
if(fabs(tempvalue - value) < ZERO_FLOAT)
{
caption.Format(_T("%d"),(int)value);
}
else if(fabs(tempvalue1 - value) < ZERO_FLOAT)
{
caption.Format(_T("%.1f"),value + ZERO_FLOAT);
}
else if(fabs(tempvalue2 - value) < ZERO_FLOAT)
{
caption.Format(_T("%.2f"),value + ZERO_FLOAT);
}
else
{
caption.Format(_T("%f"),value + ZERO_FLOAT );
}
return caption;
}
CString ConCString(double value)
{
return ConCString((float)value);
}
CString ConCString(float value)
{//先这样,以后再解决
//int nValue = (value * 100000 + 0.5);
//value = nValue / 100000.0f;
//value = -0.6999999f;
BOOL bNegtive = (value < -ZERO_FLOAT);
if(bNegtive == TRUE)
value = - value;
float tempvalue = (value + 0.5f);
float tempvalue1 = (value * 10.0f +0.5f) / 10.0f;
float tempvalue2 = (value * 100.0f +0.5f) / 100.0f;
float tempvalue3 = (value * 1000.0f +0.5f) / 1000.0f;
CString caption =_T("");
if(fabs(tempvalue - value) < ZERO_FLOAT)
{
caption.Format(_T("%d"),(int)value);
}
else if(fabs(tempvalue1 - value) < ZERO_FLOAT)
{
caption.Format(_T("%.1f"),value + ZERO_FLOAT);
}
else if(fabs(tempvalue2 - value) < ZERO_FLOAT)
{
caption.Format(_T("%.2f"),value + ZERO_FLOAT);
}
else if(fabs(tempvalue3 - value) < ZERO_FLOAT)
{
caption.Format(_T("%.3f"),value + ZERO_FLOAT);
}
else
{
caption.Format(_T("%f"),value);
}
if(bNegtive == TRUE)
caption = _T("-") + caption;
return caption;
}
CString ConCString( long value )
{
CString str;
str.Format(_T("%ld"),(int)value);
return str;
}
CString ConCString( byte value )
{
CString str;
str.Format(_T("0x%x"),value);
return str;
}
CString ConCStringChar( int value )
{
CString str;
str.Format(_T("%c"),value);
return str;
}
void Sample()
{
CString tmp;
tmp = ConCString(1.0f); OutputDebugString(tmp + L"\n");
tmp = ConCString(-6.999999); OutputDebugString(tmp + L"\n");
tmp = ConCString(0x0C8E); OutputDebugString(tmp + L"\n");
tmp = ConCString(0x7FFFFFFF); OutputDebugString(tmp + L"\n");
tmp = ConCString("少莫千华"); OutputDebugString(tmp + L"\n");
tmp = ConCString(19900823); OutputDebugString(tmp + L"\n");
tmp = ConCString(19900823l); OutputDebugString(tmp + L"\n");
tmp = ConCStringChar(8482); OutputDebugString(tmp + L"\n");
tmp = ConCStringChar(8481); OutputDebugString(tmp + L"\n");
tmp = ConCStringChar(8451); OutputDebugString(tmp + L"\n");
tmp = ConCStringChar(8480); OutputDebugString(tmp + L"\n");
tmp = ConCStringChar(8457); OutputDebugString(tmp + L"\n");
tmp = ConCStringChar(8471); OutputDebugString(tmp + L"\n");
tmp = ConCStringChar(169); OutputDebugString(tmp + L"\n");
tmp = ConCStringChar(174); OutputDebugString(tmp + L"\n");
for (int i = 13184;i<=13277 ;i++)
tmp = ConCStringChar(i); OutputDebugString(tmp + L"\n");
tmp = ConCStringTabNumber(10); OutputDebugString(tmp + L"开始\n");
tmp = ConCStringScoreCap(-100.0f); OutputDebugString(tmp + L"\n");
tmp = ConCStringScoreCap(99.56f); OutputDebugString(tmp + L"\n");
}
};