http://blog.daum.net/penbell/71
string <-> char * 타입 변환
1. string과 char *
C에서 문자열을 저장하기 위해서는 char[] 을 만들거나 char *를 사용하였다. C++에서는 좀더 편리하게 문자열을 사용하기 위해
string 타입이 생겼다. 먼저 string 타입을 사용하기 위해선 다음과 같이 선언해줘야 한다.
#include <string>
using namespace std;
C에서 문자열을 사용하기 위해서는 #include <strng.h>를 선언해줬지만 C++에서는 주로 .h가 생략된 헤더파일이 많다.
결론적으로 문자열을 저장한다는 것은 같은데 string 타입의 문자열을 char *타입에 저장하거나 그 반대는 어떻게 될까?
2. char * string 변환
string타입은 char * 타입의 문자열을 대입시켜도 그대로 복사가 이루어진다. 따라서 그냥 대입하면된다.
string str;
char *ch = "hello world";
str = ch;
너무 간단하다
3. string -> char* 변환
반대로도 그냥 대입이 되었으면 좋겠는데 아쉽게도 그렇게 하면 다음과 같은 에러가 발생한다.
-> std::string 에서 'char *'(으)로 변환할 수 없습니다.
string 타입은 char * 타입으로 자동형변환이 안되기 때문에 에러가 나는 것이다.
그렇다면 명시적으로 형변환을 시킬 수 있을까?
답은 있다. 그 방법은 다음과 같다.
ch = str.c_str();
위와 같이하면 string 타입의 str변수가 char *타입이 되어서 ch에 저장이 된다.
이것도 생각보단 어렵지 않다.
사실 string타입에 관련된 함수가 이미 많이 정의되어 있다. 변수명에 . 만찍어도 다양함 함수가 나오는데 이것들의 기능을 알고 싶다면
찾아 보길 바란다.
'차근차근 > C' 카테고리의 다른 글
CString 의 비밀 (0) | 2014.09.04 |
---|---|
LPSTR, LPCSTR, LPTSTR, LPCTSTR , LPWSTR, LPCWSTR 의 의미 (0) | 2014.09.04 |
[VC]프로그래밍팁 (0) | 2014.09.04 |
[펌] Win32 API FAQ (0) | 2014.09.04 |
[MFC] 디렉토리 존재 유무 확인/디렉토리내 파일 검색 (0) | 2014.09.04 |