728x90
반응형
728x90
반응형
728x90
반응형

TTOF2() 함수


  • Visual C++ 6.0 에서는 double atof(const char *str) 함수만 지원하며, double _wtof(const wchar_t *str) 함수는 제공되지 않습니다.
  • 참고로, 정수형(generic-text 타입)은 지원되지만, 뭔가 5% 부족한 느낌이 있습니다.

그래서 직접 함수를 만들어 보았습니다.

  • atof() 대신 사용할 수 있도록 VC++ 6.0에서 TCHAR을 지원하는 형식으로 개선 한 함수입니다.
  • 만약 VC++ 6.0을 어쩔 수 없이 사용해야 한다면 한 번 활용해 보세요!


  • cpp

    
    ////////////////////////////////////////////////////////////////////////// 
    //
    // TTOF2.h
    //
    //  made by j2doll (https://j2doll.tistory.com/102) 
    //  v0.2 : check valiation of input parameter
    //  v0.1 : Initial version ( 9, May, 2007 )
    //  use for visual c++ 6.0 or under version  
    // 
    //////////////////////////////////////////////////////////////////////////
    
    #ifndef _TTOF2_DEFINE
    #define _TTOF2_DEFINE
    
    #if _MFC_VER >= 0x0700
    
    #ifdef _UNICODE
    static double TTOF2(WCHAR *szIn) { return ( _wtof(szIn) ); }; 
    #else
    static double TTOF2(CHAR *szIn) { return ( atof(szIn) ); } 
    #endif 
    
    #else // 6 or under version 
    
    #ifdef _UNICODE
    static double TTOF2(WCHAR *szIn)
    {
    
      if ( szIn == NULL ) 
    
        return 0;
    
      double retVal;
      size_t len = _tcslen( szIn );
    
      if ( len == 0 )
    
        return 0; 
    
      CHAR  * szMBCSBuf = new CHAR [ len + 1 ];
      ASSERT(NULL!=szMBCSBuf); // DEBUG 
    
      WideCharToMultiByte( CP_ACP, 0, szIn, (-1), szMBCSBuf, sizeof(szMBCSBuf), NULL, NULL ); // convert character-set
      retVal = atof( szMBCSBuf ); 
    
      delete [] szMBCSBuf; 
    
      return retVal;
    }
    #else
     static double TTOF2(CHAR *szIn) { return ( atof(szIn) ); } 
    #endif //  _UNICODE
    
    #endif // _MFC_VER >= 0x0700 
    
    #endif // _TTOF2_DEFINE 
    
    //----------------------------------------------------------
    
    
728x90
반응형

+ Recent posts