Data Conversions C++
How to: Convert Between Various String Types
// -- Decimal Conversions // Decimal To Hex // Use _itoa( ) function and set radix to 16. In hexstring is 1e. char hexstring[10]; int number = 30; itoa( number, hexstring, 16); // Hex To Decimal char * hexstring= "ABCDEF"; char * p; int number = strtol(hexstring, &p,16); 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; } // -- String Conversions // String to Hex // where string = your string and // 04 = length of your string and X = hex sscanf(string, %04X, &your_word16); // 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 CString MyString = "ABCDEF"; char * szMyString = (char *) (LPCTSTR) MyString; 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 // Now decimal contains 1 because there is // only one digit before the "." // strFinalVal contains 4.125 CString strValue,strInt, strDecimal; int decimal,sign; double dValue = 4.125; strValue = _fcvt(dValue,6,&decimal,&sign); strInt = strValue.Left(decimal); // strInt contains 4 strDecimal = strValue.Mid(decimal); // strDecimal contains 125 CString strFinalVal; strFinalVal.Format("%s.%s",strInt,strDecimal); // Double To CString CString strValue; int decimal,sign; double dValue = 123456789101112; strValue = _ecvt(dValue,15,&decimal,&sign); // 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; // WCHAR* to MultyByte LPCWSTR pTexFilename; char Filename[MAX_PATH]; WideCharToMultiByte( CP_ACP, 0, pTexFilename, lstrlenW( pTexFilename ), Filename, MAX_PATH, 0, 0 ); // 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); // -- Character arrays // Char array to integer char MyArray[20]; int nValue = atoi(MyArray); // Char array to float char MyArray[20]; float fValue = atof(MyArray); // Char Pointer to double char *str = " -343.23 "; double dVal = atof( str ); // Char Pointer to integer char *str = " -343.23 "; int iVal = atoi( str ); // Char Pointer to long char *str = "99999"; long 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; wVar = 247; fVar = (float)fVar; //Converting from WORD to float. // Float/Double/Int to char* float fnum=123.5f; char ctemp[255]; sprintf( ctemp, "%g", fnum ); // WCHAR* to CHAR* WCHAR temp=L"Hello World"; char ctemp[255]={}; WideCharToMultiByte(CP_ACP,0,temp,sizeof(temp),ctemp,255*sizeof(ctemp),0,0); // CHAR* to WCHAR* char* ctemp = "Hello World"; WCHAR temp[255]; MultiByteToWideChar( CP_ACP, 0, ctemp, -1, temp, 255*sizeof(temp) );
Comments
Post a Comment