Computer Science > Language Processing
문자열처리 4장. 윈도우즈(C/C++)에서 문자열 사용법 총정리
2013.11.29 00:19
4장. 윈도우즈(C/C++)에서 문자열 사용법 총정리
1. 정리
지금까지 여러가지의 문자열 처리 타입과 클래스들을 살펴 보았습니다.
문자열을 처리하는게 사실 쉬운일이 아니군요.
하지만 한번 쭉 읽으면서 정리를 하셨다면 대충 어떻게 사용해야 할 지 감은 잡으셨을 것 같습니다.
정리를 한다면 다음과 같습니다.
- 유니코드와 MBCS을 잘 구분하여 사용하여야 한다.
- 클래스의 문자열은 형변환해서 수정하지 말아라.
- 다른 문자형 및 클래스로의 변환은 바로되지 않을 경우 LPCSTR, LPWCSTR 혹은 BSTR로 변환한 후 자신 원하는 타입으로 변환을 시도하라.
뭐 이것보다 생각해야 할 것이 많겠지만 실제 코딩시 위의 사항만 생각하신다면 무난할 것 같습니다.
다음은 각각의 형변환을 위해 LPCSTR, LPCWSTR, BSTR로 변환이 가능한지를 나타내는 표입니다.
이 표는 http://bektekk.wo.to/str04.htm 에서 가지고 왔습니다. 또한 여기 까지 작성한 강좌의 많은 부분도 이 웹링크의 문서의 많은 부분을 참조하였음을 밝힙니다.
Class | string type | convert to char* ? | convert toconst char* ? | convert towchar_t* ? | convert toconst wchar_t* ? | convert to BSTR ? | construct from char* ? | construct from wchar_t* ? |
---|---|---|---|---|---|---|---|---|
_bstr_t | BSTR | yes, cast1 | yes, cast | yes, cast1 | yes, cast | yes2 | yes | yes |
_variant_t | BSTR | no | no | no | cast to_bstr_t 3 | cast to_bstr_t 3 | yes | yes |
string | MBCS | no | yes, c_str() method | no | no | no | yes | no |
wstring | Unicode | no | no | no | yes, c_str() method | no | no | yes |
CComBSTR | BSTR | no | no | no | yes, cast to BSTR | yes, cast | yes | yes |
CComVariant | BSTR | no | no | no | yes4 | yes4 | yes | yes |
CString | TCHAR | no6 | in MBCS builds, cast | no6 | in Unicode builds, cast | no5 | yes | yes |
COleVariant | BSTR | no | no | no | yes4 | yes4 | in MBCS builds | in Unicode builds |
1 Even though _bstr_t provides conversion operators to non-const pointers, modifying the underlying buffer may cause a GPF if you overrun the buffer, or a leak when the BSTR memory is freed.2 A _bstr_t holds a BSTR internally in a wchar_t* variable, so you can use the const wchar_t* converter to retrieve the BSTR . This is an implementation detail, so use this with caution, as it may change in the future.3 This will throw an exception if the data cannot be converted to a BSTR .4 Use ChangeType() then access the bstrVal member of the VARIANT . In MFC, this will throw an exception if the data cannot be converted.5 There is no BSTR conversion function, however the AllocSysString() method returns a new BSTR .6 You can temporarily get a non-const TCHAR pointer using the GetBuffer() method. |
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
33 |
한글 맞춤법(1988) 규정, 1995년 수정판 색인
![]() | 푸우 | 2013.12.30 | 15478 |
32 | MeCab 툴 사용법 | 푸우 | 2013.12.28 | 11327 |
31 |
MeCab 다운로드 및 컴파일 그리고 설치
![]() | 푸우 | 2013.12.28 | 10443 |
30 | 일본어 형태소 분석기 MeCab | 푸우 | 2013.12.28 | 10295 |
29 | 감성을 나타내는 단어들 | 푸우 | 2013.11.29 | 9935 |
28 | 허걱 일본어에 이런 경우가... | 푸우 | 2013.11.29 | 7875 |
27 |
한글 한자 변환용 코드 테이블
![]() | 푸우 | 2013.11.29 | 25008 |
26 |
A Study of Stemming Effects on Information Retrieval in Bahasa Indonesia
![]() | 푸우 | 2013.11.29 | 13967 |
25 |
다국어 스태밍 라이브러리 snowball
![]() | 푸우 | 2013.11.29 | 20372 |
24 |
불규칙 동사표
![]() | 푸우 | 2013.11.29 | 18980 |
23 |
한국어의 Soundex 연구
![]() | 푸우 | 2013.11.29 | 17099 |
22 |
일본어 처리시 고려해야 할 사항
[1] ![]() | 푸우 | 2013.11.29 | 18900 |
21 |
일본어 Soundex를 위한 기초 자료
![]() | 푸우 | 2013.11.29 | 14912 |
20 |
검색시스템 개발을 위한 첫걸음-자연어 처리
![]() | 푸우 | 2013.11.29 | 10384 |
19 |
초성검색시 자음을 연달아 입력시 문제점
![]() | 푸우 | 2013.11.29 | 19933 |
18 |
한글 초성 추출 프로그램
![]() | 푸우 | 2013.11.29 | 22005 |
17 |
한글 초성 추출을 위한 기초 자료
![]() | 푸우 | 2013.11.29 | 18824 |
16 |
CJK코드페이지분석
![]() | 푸우 | 2013.11.29 | 11454 |
» | 4장. 윈도우즈(C/C++)에서 문자열 사용법 총정리 | 푸우 | 2013.11.29 | 14048 |
14 | 3장. 윈도우즈(C++)에서 문자열 사용법 2부(basic_string, CString) | 푸우 | 2013.11.29 | 19436 |