< String을 숫자로>

//Convert a string to double (atof and _wtof), integer (atoi, _atoi64, _wtoi and _wtoi64), or long integer (atol and _wtol).

n      CString → int

       CString str = “100”;

       Int x = atoi (str);

      int n = atoi( "1234" );

             CString str("777");
               if(EOF == sscanf(str, "%d", &i)){      //error   }

 

n      CString → float

       CString str = “100.01”;

float x = atof (str);

             const char* str = "333.3";   
                               float x;
                        if(EOF == sscanf(str, "%f", &x)){      //error   }
             CString str = “-2.353”; 
                               float x = atof ( (LPCTSTR) str);
 

n      Char * → int

       char* string = "777";

         int x; 

     if(EOF == sscanf(string, "%d", &x)){      //error   }

            char* string = "777";
         int x = atoi(string);
            char * string = “777”
int x = strtol(string); 

 

n      Char * → float

            char* string = "333.3";
                              float x;
                              if(EOF == sscanf(string, "%f", &x)){      //error   }
            char* string = "333.3";
                              float x = atof(string);

       char * string = “333.3”;

     float x = strtod(string); // strtod 는 win95와 winNT에만 쓰인다?

 

 

<숫자를 CString으로>

n      int → CString ; ATL 의 CString도 동일

               int x = 1234; 
            CString str;

str.Format("%d", x); // %d 는 singed decimal integer의미 %i 와 같다.

                               //  unsinged decimal integer 는 %u

               // CString str;  str.Format("%d", 1234); 로 쓸 수도 있다.
               Ex2 )        long b1X  = 100; 
                               long  b1Y = 20;

 

                            CString strX;

                            strX.Format(L"X is %d     ", b1X);

                            CString strY;

                            strY.Format(L"Y is %d", b1Y);

                            CString strMouse = strX + strY;

 

                            CComBSTR cbstrMouse = strMouse;

                            spTEST->put_innerText( cbstrMouse );

n      float → CString

float x = 20.34;

CString str;

str.Format("%f",x);

 

<숫자를 char*로>

n      int → char *      

       int Number = 234;
     char string[10];
     wsprintf(string,_T("%d"),Number);
     //::MessageBox(NULL, string, "Succeeded", MB_OK);
 
       int x= 1234;
               char string[10];// simply large enough - don't forget the 
                                     // extra byte needed for the trailing '/0' 

        sprintf(string, "%d", x);

 

       char string[10];
     _itoa(1234, string, 10); //  _itoa 는 int만 char*로 바꿀 수 있다. 
                              // int 1234를 10진수 표기로 char *인 string에 저장하라. 

   

n      float → char *

               float x= 12.34;
               char string[10]; // simply large enough - don't forget the 
                        // extra byte needed for the trailing '/0' 

    sprintf(string, "%f", x);

 

<문자열 끼리>

n      CString → char *

CString str (“abcd”);

char * string = str.GetBuffer(str.GetLength() );

 

n      char * → CString

               char * string = "Hello"; 이면
 
          CString str = “Hello”;
          CString str(string);
          CString str;  str = string;

 

 

n      CString을 16진 int로 바꾸기

I need to convert a string data with an Hexa value like : "0F8CBA" into a DWORD type to have at final : 0F8CBA someone can help me please :)

 

strtol Convert string to long integer

strtoul Convert string to unsigned long integer

 

Here is the simplest way. strtol 이용

const char * sz = "0F8CBA";

DWORD dw = strtol( sz, 16 );

 

또는 strtoul 이용

unsigned long strtoul(const char *s, char **endptr, int radix);

/* strtoul example */

#include <stdlib.h>

#include <stdio.h>

int main(void)

  

char *string = "87654321", *endptr;

unsigned long lnumber;  

lnumber = strtoul(string, &endptr, 10);  

printf("string = %s  long = %lu",   string, lnumber);  

return 0;

 

Data Conversion Reference


Author : V.Girish

Environment: Compiled using VC6.0 Sp3 and tested using Win95/98 WinNT4.0 and Win 2000

Here are a few data Conversions with small examples :-

PART ONE :- DECIMAL CONVERSIONS
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) Or you can use this too
 
               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 :- // MFC Cstring만 되는 듯
 
            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 125
 
            CString 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);
 
               
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 ARRAYS
 
 
Char 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
 
 
               As i get more conversions, i'll keep adding them to this list. If you have something to say , please
feel free to send me a mail. All luck and have a nice time.

출처 : http://blog.naver.com/jangtimjang?Redirect=Log&logNo=20005044146

Posted by system
l