반응형

C++/CLI : String 을 char* 로 변환 및 char* 을 String 로 변환

 

1. 문자열 변환

#include "stdafx.h"
#include "SCDSInfo.h"

#include <vcclr.h>


using namespace System;
using namespace System::Diagnostics;
using namespace System::Runtime::InteropServices;

 

String^ pData = "Unicode String";

  // String 을 const wchar_t* 으로 변환
  pin_ptr<const wchar_t> wfilename = PtrToStringChars(pData);

 

  // const wchar_t* 를 String 으로 변환
  String^ convertFileName = gcnew String ( wfilename );

  Debug::WriteLine(wcslen(wfilename), "[SendDataObject]  wfilename Length ");
  Debug::WriteLine(convertFileName, "[SendDataObject] convertFileName Value ");

 

  // String 을 char* 으로 변환
  IntPtr pDataPtr1 = Marshal::StringToHGlobalAnsi(pData);
  char* charPtrA = (char*)pDataPtr1.ToPointer();

  OutputDebugStringA(charPtrA);

 

  // String 을 wchar_t* 으로 변환
  IntPtr pDataPtr2 = Marshal::StringToHGlobalUni(pData);
  wchar_t* charPtrW = (wchar_t*)pDataPtr2.ToPointer();


  // char* 를 String 으로 변환

  String^ convertStringA = gcnew String(charPtrA);

 

  // wchat_t* 를 String 으로 변환
  String^ convertStringW = gcnew String(charPtrW);

 

  Debug::WriteLine(convertStringA, "[SendDataObject] convertStringA Value ");
  Debug::WriteLine(convertStringW, "[SendDataObject] convertStringW Value ");

 

 

PtrToStringChars() 는 #include <vcclr.h> 해 줘야 한다.

반응형

'[====== Development ======] > C++' 카테고리의 다른 글

Google 의 C++ Coding Style 가이드  (0) 2021.08.02
Log4cxx Library Build  (0) 2021.07.30
[MFC] Resize에 따른 컨트롤 위치 이동  (0) 2021.07.23
GetVersionExA 에러  (0) 2021.07.22
C++ MBCS 경고 무시  (0) 2021.06.08

+ Recent posts