현재 오프라인 상태입니다. 인터넷에 다시 연결하기를 기다리고 있습니다.

Visual C++ .NET에서 System::String*에서 Char*로 변환하는 방법

이 문서는 이전에 다음 ID로 출판되었음: KR311259
이 문서에서는 다음 Microsoft .NET Framework 클래스 라이브러리 네임스페이스를 참조합니다.
  • System.Runtime.InteropServices

문서 내용

요약
이 문서에서는 Visual C++ .NET에서 Managed Extensions를 사용하여 System::String*에서 char*로 변환하는 몇 가지 방법을 설명합니다.

맨 위로

방법 1:

PtrToStringChars는 실제 String 개체에 대한 내부 포인터를 제공합니다. 이 포인터를 관리되지 않는 함수 호출에 전달한 경우에는 먼저 포인터를 고정시켜 비동기 가비지 수집 프로세스 중에 개체가 이동하지 않도록 해야 합니다.
//#include <vcclr.h>System::String * str = S"Hello world\n";const __wchar_t __pin * str1 = PtrToStringChars(str);wprintf(str1);					
맨 위로

방법 2:

StringToHGlobalAnsi는 관리되는 String 개체의 내용을 기본 힙(heap)에 복사한 다음 즉시 ANSI(American National Standards Institute) 형식으로 변환합니다. 이 방법에서는 필요한 기본 힙 메모리가 할당됩니다.
//using namespace System::Runtime::InteropServices;System::String * str = S"Hello world\n";char* str2 = (char*)(void*)Marshal::StringToHGlobalAnsi(str);printf(str2);Marshal::FreeHGlobal(str2);				
맨 위로

방법 3:

VC7 CString 클래스에는 관리되는 String 포인터를 사용하고 CString을 해당 내용과 함께 로드하는 생성자가 있습니다.
//#include <atlstr.h>System::String * str = S"Hello world\n";CString str3(str); printf(str3);				
맨 위로

전체 예제 코드

//compiler option: cl /clr  #include <vcclr.h>#include <atlstr.h>#include <stdio.h>#using <mscorlib.dll>using namespace System;using namespace System::Runtime::InteropServices;int _tmain(void){   	System::String * str = S"Hello world\n";	//method 1	const __wchar_t __pin * str1 = PtrToStringChars(str);	wprintf(str1);		//method 2	char* str2 = (char*)(void*)Marshal::StringToHGlobalAnsi(str);	printf(str2);	Marshal::FreeHGlobal(str2);	//method 3	CString str3(str); 	printf(str3);    return 0;}				
맨 위로
참조
가장 많이 참조되는 다른 Visual C++ .NET Microsoft 기술 자료 문서를 보려면 다음 Microsoft 웹 사이트를 방문하십시오. Visual C++ .NET에 대한 자세한 내용은 아래의 Microsoft Usenet 뉴스 그룹을 참조하십시오. 맨 위로



Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.
kbVC700
속성

문서 ID: 311259 - 마지막 검토: 01/20/2006 10:00:00 - 수정: 3.1

Microsoft Visual C++ .NET 2002 Standard Edition, Microsoft Visual C++ .NET 2003 Standard Edition

  • kbhowtomaster kbnewsgrouplink kbmanaged KB311259
피드백
&t=">eElement('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?">