如是,多谢!

解决方案 »

  1.   

    BSTR A=L"FDSAF";
    (LPSTR)A; 
    不行么?
      

  2.   

    BSTR b;
    LPSTR c;
    _bstr_t bc = b;
    c = bc;_bstr_t cb = c;
    b = cb;
      

  3.   

    BSTR is point to Unicode character string, and LPSTR is pointer to a ANSI character string. Use function WideCharToMultiByte.
      

  4.   

    (LPSTR)_com_util::ConvertBSTRToString(bstrVal);
      

  5.   

    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
    );
      

  6.   

    字串间的转换
    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>
      

  7.   

    #include<afxconv.h>  // for mfc
    --------------------
    #include <atlbase.h> // for atl
    #include <atlconv.h>
    ---------------------
    BSTR bstrText=L"hello,world";
    LPTSTR lpszText=W2A(bstrText);
      

  8.   

    反过来USES_CONVERSION;LPTSTR lpszText=_T("hello,world");
    BSTR bstrText=A2W(lpszText);