BSTR b; LPSTR c; _bstr_t bc = b; c = bc;_bstr_t cb = c; b = cb;
BSTR is point to Unicode character string, and LPSTR is pointer to a ANSI character string. Use function WideCharToMultiByte.
(LPSTR)_com_util::ConvertBSTRToString(bstrVal);
int MultiByteToWideChar( UINT CodePage, // code page DWORD dwFlags, // character-type options LPCSTR lpMultiByteStr, // string to map int cbMultiByte, // number of bytes in string LPWSTR lpWideCharStr, // wide-character buffer int cchWideChar // size of buffer );
字串间的转换 Decimal To Hexa :- ------------------Use _itoa( ) function and set radix to 16.char hexstring[10]; int number = 30; itoa( number, hexstring, 16);In hexstring is 1e. Hexa To Decimal :- ------------------ a)You can use strtol function and you can specify base. char * hexstring= "ABCDEF"; char * p; int number = strtol(hexstring, &p,16);b) bool HexToDecimal (char* HexNumber, int& Number) { char* pStopString; Number = strtol (HexNumber, &pStopString, 16); return (bool)(Number != LONG_MAX); } Decimal to Time :- ------------------char *DecToTime(float fTime, char *szTime) { int nHrs, nMin, nSec; fTime *= 3600; nHrs = (int)fTime / 3600; nMin = (int)(fTime - nHrs * 3600) / 60; nSec = (int)(fTime - nHrs * 3600 - nMin * 60); wsprintf(szTime, "%02d.%02d.%02d Hrs.Min.Sec.", nHrs, nMin, nSec); return szTime; }PART TWO :- STRING CONVERSIONS String to Hexa :- -----------------sscanf(string, %04X, &your_word16); // where string = your string and 04 = length of your string and X = hex Hex to CString ---------------CString Str; unsigned char Write_Buff[1]; Write_Buff[0] = 0x01; Str.Format("0x0%x",Write_Buff[0]); COleVariant to CString ----------------------CString strTemp; COleVariant Var; Var = "FirstName"; strTemp = Var.bstrVal; AfxMessageBox(strTemp); CString to Char Pointer ----------------------- a) CString MyString = "ABCDEF"; char * szMyString = (char *) (LPCTSTR) MyString;b) char *pBuffer = new char[1024]; CString strBuf = "Test"; pBuffer = strBuf.GetBuffer(sizeof(pBuffer)); Char Pointer to CString -----------------------char * mystring = "12345"; CString string = mystring; Double to CString including the fractional part :- --------------------------------------------------CString strValue,strInt, strDecimal; int decimal,sign; double dValue = 4.125; strValue = _fcvt(dValue,6,&decimal,&sign); // Now decimal contains 1 because there is only one digit before the . strInt = strValue.Left(decimal); // strInt contains 4 strDecimal = strValue.Mid(decimal); // strDecimal contains 125CString strFinalVal; strFinalVal.Format("%s.%s",strInt,strDecimal); // strFinalVal contains 4.125 Double To CString :- -------------------- CString strValue; int decimal,sign;double dValue = 123456789101112; strValue = _ecvt(dValue,15,&decimal,&sign); // Converting double to string CString To Double :- ---------------------strValue = "121110987654321"; dValue = atof(strValue); CString to LPCSTR :- --------------------CString str1 = _T("My String"); int nLen = str1.GetLength(); LPCSTR lpszBuf = str1.GetBuffer(nLen); // here do something with lpszBuf........... str1.ReleaseBuffer(); CString to LPSTR :- --------------------CString str = _T("My String"); int nLen = str.GetLength(); LPTSTR lpszBuf = str.GetBuffer(nLen); // here do something with lpszBuf........... str.ReleaseBuffer(); CString to WCHAR* -----------------CString str = "A string here" ; LPWSTR lpszW = new WCHAR[255];LPTSTR lpStr = str.GetBuffer( str.GetLength() ); int nLen = MultiByteToWideChar(CP_ACP, 0,lpStr, -1, NULL, NULL); MultiByteToWideChar(CP_ACP, 0, lpStr, -1, lpszW, nLen); AFunctionUsesWCHAR( lpszW ); delete[] lpszW; LPTSTR to LPWSTR ---------------- int nLen = MultiByteToWideChar(CP_ACP, 0, lptStr, -1, NULL, NULL); MultiByteToWideChar(CP_ACP, 0, lptStr, -1, lpwStr, nLen); string to BSTR -------------- string ss = "Girish"; BSTR _bstr_home = A2BSTR(ss.c_str()); CString to BSTR --------------- CString str = "whatever" ; BSTR resultsString = str.AllocSysString(); _bstr_t to CString -------------------#include #include _bstr_t bsText("Hai Bayram"); CString strName; W2A(bsText, strName.GetBuffer(256), 256); strName.ReleaseBuffer(); AfxMessageBox(strName);char szFileName[256]; GetModuleFileName(NULL,szFileName,256); AfxMessageBox(szFileName); PART THREE :- CHARACTER ARRAYSChar array to integer ---------------------char MyArray[20]; int nValue;nValue = atoi(MyArray); Char array to float -------------------char MyArray[20]; float fValue;fValue = atof(MyArray); Char Pointer to double ----------------------char *str = " -343.23 "; double dVal; dVal = atof( str ); Char Pointer to integer -----------------------char *str = " -343.23 "; int iVal; iVal = atoi( str ); Char Pointer to long --------------------char *str = "99999"; long lVal; lVal = atol( str ); Char* to BSTR ------------- char * p = "whatever"; _bstr_t bstr = p; Float to WORD and Vice Versa ----------------------------- float fVar; WORD wVar; fVar = 247.346; wVar = (WORD)fVar; //Converting from float to WORD. The value in wVar would be 247 wVar = 247; fVar = (float)fVar; //Converting from WORD to float. The value in fVar would be 247.00</BODY></HTML>
#include<afxconv.h> // for mfc -------------------- #include <atlbase.h> // for atl #include <atlconv.h> --------------------- BSTR bstrText=L"hello,world"; LPTSTR lpszText=W2A(bstrText);
(LPSTR)A;
不行么?
LPSTR c;
_bstr_t bc = b;
c = bc;_bstr_t cb = c;
b = cb;
UINT CodePage, // code page
DWORD dwFlags, // character-type options
LPCSTR lpMultiByteStr, // string to map
int cbMultiByte, // number of bytes in string
LPWSTR lpWideCharStr, // wide-character buffer
int cchWideChar // size of buffer
);
Decimal To Hexa :-
------------------Use _itoa( ) function and set radix to 16.char hexstring[10];
int number = 30;
itoa( number, hexstring, 16);In hexstring is 1e.
Hexa To Decimal :-
------------------
a)You can use strtol function and you can specify base.
char * hexstring= "ABCDEF";
char * p;
int number = strtol(hexstring, &p,16);b)
bool HexToDecimal (char* HexNumber, int& Number)
{
char* pStopString;
Number = strtol (HexNumber, &pStopString, 16);
return (bool)(Number != LONG_MAX);
}
Decimal to Time :-
------------------char *DecToTime(float fTime, char *szTime)
{
int nHrs, nMin, nSec;
fTime *= 3600;
nHrs = (int)fTime / 3600;
nMin = (int)(fTime - nHrs * 3600) / 60;
nSec = (int)(fTime - nHrs * 3600 - nMin * 60);
wsprintf(szTime, "%02d.%02d.%02d Hrs.Min.Sec.", nHrs, nMin, nSec);
return szTime;
}PART TWO :- STRING CONVERSIONS
String to Hexa :-
-----------------sscanf(string, %04X, &your_word16);
// where string = your string and 04 = length of your string and X = hex
Hex to CString
---------------CString Str;
unsigned char Write_Buff[1];
Write_Buff[0] = 0x01;
Str.Format("0x0%x",Write_Buff[0]);
COleVariant to CString
----------------------CString strTemp;
COleVariant Var;
Var = "FirstName";
strTemp = Var.bstrVal;
AfxMessageBox(strTemp);
CString to Char Pointer
-----------------------
a)
CString MyString = "ABCDEF";
char * szMyString = (char *) (LPCTSTR) MyString;b)
char *pBuffer = new char[1024];
CString strBuf = "Test";
pBuffer = strBuf.GetBuffer(sizeof(pBuffer));
Char Pointer to CString
-----------------------char * mystring = "12345";
CString string = mystring;
Double to CString including the fractional part :-
--------------------------------------------------CString strValue,strInt, strDecimal;
int decimal,sign;
double dValue = 4.125;
strValue = _fcvt(dValue,6,&decimal,&sign); // Now decimal contains 1 because there is only one digit before the .
strInt = strValue.Left(decimal); // strInt contains 4
strDecimal = strValue.Mid(decimal); // strDecimal contains 125CString strFinalVal;
strFinalVal.Format("%s.%s",strInt,strDecimal); // strFinalVal contains 4.125
Double To CString :-
--------------------
CString strValue;
int decimal,sign;double dValue = 123456789101112;
strValue = _ecvt(dValue,15,&decimal,&sign); // Converting double to string
CString To Double :-
---------------------strValue = "121110987654321";
dValue = atof(strValue);
CString to LPCSTR :-
--------------------CString str1 = _T("My String");
int nLen = str1.GetLength();
LPCSTR lpszBuf = str1.GetBuffer(nLen);
// here do something with lpszBuf...........
str1.ReleaseBuffer();
CString to LPSTR :-
--------------------CString str = _T("My String");
int nLen = str.GetLength();
LPTSTR lpszBuf = str.GetBuffer(nLen);
// here do something with lpszBuf...........
str.ReleaseBuffer();
CString to WCHAR*
-----------------CString str = "A string here" ;
LPWSTR lpszW = new WCHAR[255];LPTSTR lpStr = str.GetBuffer( str.GetLength() );
int nLen = MultiByteToWideChar(CP_ACP, 0,lpStr, -1, NULL, NULL);
MultiByteToWideChar(CP_ACP, 0, lpStr, -1, lpszW, nLen);
AFunctionUsesWCHAR( lpszW );
delete[] lpszW;
LPTSTR to LPWSTR
----------------
int nLen = MultiByteToWideChar(CP_ACP, 0, lptStr, -1, NULL, NULL);
MultiByteToWideChar(CP_ACP, 0, lptStr, -1, lpwStr, nLen);
string to BSTR
--------------
string ss = "Girish";
BSTR _bstr_home = A2BSTR(ss.c_str());
CString to BSTR
---------------
CString str = "whatever" ;
BSTR resultsString = str.AllocSysString();
_bstr_t to CString
-------------------#include
#include
_bstr_t bsText("Hai Bayram");
CString strName;
W2A(bsText, strName.GetBuffer(256), 256);
strName.ReleaseBuffer();
AfxMessageBox(strName);char szFileName[256];
GetModuleFileName(NULL,szFileName,256);
AfxMessageBox(szFileName);
PART THREE :- CHARACTER ARRAYSChar array to integer
---------------------char MyArray[20];
int nValue;nValue = atoi(MyArray);
Char array to float
-------------------char MyArray[20];
float fValue;fValue = atof(MyArray);
Char Pointer to double
----------------------char *str = " -343.23 ";
double dVal;
dVal = atof( str );
Char Pointer to integer
-----------------------char *str = " -343.23 ";
int iVal;
iVal = atoi( str );
Char Pointer to long
--------------------char *str = "99999";
long lVal;
lVal = atol( str );
Char* to BSTR
-------------
char * p = "whatever";
_bstr_t bstr = p;
Float to WORD and Vice Versa
-----------------------------
float fVar;
WORD wVar;
fVar = 247.346;
wVar = (WORD)fVar; //Converting from float to WORD. The value in wVar would be 247
wVar = 247;
fVar = (float)fVar; //Converting from WORD to float. The value in fVar would be 247.00</BODY></HTML>
--------------------
#include <atlbase.h> // for atl
#include <atlconv.h>
---------------------
BSTR bstrText=L"hello,world";
LPTSTR lpszText=W2A(bstrText);
BSTR bstrText=A2W(lpszText);