์๋
ํ์ธ์!! @wonnieyoon์
๋๋ค.
MFC์๋ LPSTR,LPCSTR,LPCTSTR,LPWSTR ... ๋น์ทํ๊ฒ ๋ง์ต๋๋ค.
์ด๋ฌํ ๊ฒ๋ค์ string ์ฒ๋ฆฌ๋ฅผ ์ํด ๋์จ ํํ์ธ๋ฐ์.
๋จ์ด๋ ๋ค๋ฅด์ง๋ง ๋น์ทํ ์ํ๋ฒณ๋ค์ด ๋ถ์ด์ ํ๋์ ํํ์ด ๋๋๋ฐ
๊ฐ ๋จ์ด๋ง๋ค ๋ค๋ฅธ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
LP
:long pointer์ ์ฝ์๋ก ์ปดํ์ผ๋ฌ์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง
.Net์ ๊ฒฝ์ฐ 64bit pointer, ๋ค๋ฅธ ๋ฎ์ ๋ฒ์ ์ 32bit pointer๋ฅผ ๋ํ๋
๋๋ค.
W
:wide char๋ฅผ ๋ํ๋ด๊ณ unicode ์
๋๋ค.
์์ฝ์ ํด๋ณด์๋ฉด
LPSTR = long pointer string = char *
LPCTSTR = long pointer constant string = const char *
=> const๊ฐ ์๋ ์๋ ์ฐจ์ด๋ง ์์๋ฟ LPSTR , LPCTSTR์ ๊ฐ์ ํํ
LPWSTR = long pointer wide string = w_char *
LPCWSTR = long pointer constant wide string = const w_char *
=> ์ด๊ฒ๋ const๋ง ๋นผ๋ฉด ๊ฐ์ ํํ
T LPCTSTR => long pointer constant t_string = const tchar * tchar์ ์ฝ์tchar๋ฅผ ์๊ธฐ ์ํด์๋ ๋ฐฐ๊ฒฝ์ ์๊ณ ์์ด์ผ ํฉ๋๋ค.
๋ง์ดํฌ๋ก์ํํธ๊ฐ ์ ๊ณตํ๋ c ์ปดํ์ผ๋ฌ visual studio ๊ธฐ์ค์ผ๋ก
์ฌ๋ฌ๋๋ผ์ ์ ํ์ ํ์์ผ ํ๋๋ฐ ๋๋ผ์ ์ธ์ด์ ๋ง๊ฒ
๊ฐ๋ฐํ๊ธฐ์๋ ๋๋ฌด ํจ์จ์ฑ์ด ๋จ์ด์ง๋ค๊ณ ํ๋จํ์ฌ
unicode ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐ์ ์์ํ์ต๋๋ค.
๊ทธ๋ฐ๋ฐ charํ์์ 1Byte๋ฅผ ์ฌ์ฉํ๊ณ wide charํ์์ 2Byte๋ฅผ ์ฌ์ฉํ๊ธฐ
๋๋ฌธ์ ํธํ์ฑ์ ๋ฌธ์ ๊ฐ ๋ง๋ค๊ณ ํ๋จํ์ฌ
์ปดํ์ผ๋ฌ๊ฐ precompile option์ ๋ณด๊ณ ํ๊ฒฝ์ ๋ง๊ฒ
์ปดํ์ผ ํ ์ ์๋๋ก ๋ณ์๋ฅผ ๋ง๋ค๊ฒ ๋ฉ๋๋ค.
๊ทธ๊ฒ์ด ๋ฐ๋ก t_char(TCHAR) ๋ณ์ ์
๋๋ค.
visual studio ์์ฑ์์ ํ๊ฒฝ์ ๋ฉํฐ๋ฐ์ดํธ๋ก ํ ๊ฒ์ธ์ง ์ ๋์ฝ๋ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ฒ์ธ์ง
์ค์ ํ ์ ์๋๋ฐ ๋ฉํฐ๋ฐ์ดํธ์ ๊ฒฝ์ฐ charํ์ผ๋ก , ์ ๋์ฝ๋ ๊ธฐ๋ฐ์ผ ๊ฒฝ์ฐ w_charํ์ผ๋ก
์๋ type casting(ํ๋ณํ)์ด ๋ฉ๋๋ค.
์์ฆ์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ฒ ๋๋ฉด ์ ๋์ฝ๋ ๊ธฐ๋ฐ์ผ๋ก ์์
์ ํ๋๋ฐ
์ ์ด๋ ์ ๊ฐ์ ๊ฒฝ์ฐ ์ฆ๊ถ์์คํ
์ ๋ง๋๋๋ฐ ํ์ฌ์ ์๋ฃจ์
์ด ๋ฉํฐ๋ฐ์ดํธ ๋ฒ์ ์ด์ฌ์
์ผ๋ง์ ์ ์๋ฃจ์
์ ์ ๋์ฝ๋ ๋ฒ์ ์ผ๋ก ๋ฐ๊พธ๋๋ผ ์๊ฒ๋ ์ง์๋ค์
๋๋ค.
ํ๋ก์ ํธ ๋ง๋ค๋ ๊ผญ ์ ๋์ฝ๋๋ก ๋ง๋์ธ์...๋์ค์ ์ ์ง๋ณด์๊ฐ ๋๋ฌด ํ๋ค์ด์ง๋๋ค.
๋ฉํฐ๋ฐ์ดํธ์์ ์ ๋์ฝ๋๋ก ๋ฐ๊ฟ๋...์์ฒญ๋ ๋
ธ๊ฐ๋ค....ใ
MFC๋ c,c++ ๋ฌธ๋ฒ์ ๊ธฐ๋ฐํ๋ค๋ณด๋
char *์ ์์ธ์๊ฐ ์๋๋ฐ CString์ ์ฐ๋ค๋ณด๋ฉด ์๋ฌด๋๋ char *์ผ๋ก ํ๋ณํ ํด์ผ ํ ๋๊ฐ ์๋ค.
๊ทธ๋ด๋ (LPSTR)(LPCTSTR)CString ํ์์ผ๋ก ์ฌ์ฉํด์ผ ํฉ๋๋ค.
=> ๊ฒฐ๊ตญ (char *)(const char *)CString ์
๋๋ค.
์ด๋ ๊ฒ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์๋ฌ๊ฐ ๋ฉ๋๋ค.
๊ทธ๋ฐ๋ฐ ์ฌ์ค const๋ผ๋๊ฒ์ด ๊ดํ ์กด์ฌํ๋ ๊ฒ์ด ์๋๊ณ ๋ํ const char *ํ์ผ๋ก
CString์ ๋ฐ๋๊ฒ๋ ์์ ์ฑ์ ์ํด const๋ฅผ ๋ถ์ฌ์ ๋ฐ๋๊ฒ์ธ๋ฐ
const๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด char *๋ก ๋ค์ ๋ณํํ๊ฒ ๋๋ฉด
๋์ค์ ์ฝ๋ฉ์ ํ๋ค ํฐ ์ค๋ฅ๋ฅผ ์ผ์ผํฌ์ ์์ต๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ณดํต
CString test = "abc";
char * ch = (LPSTR)(LPCTSTR)test;
AfxMessageBox(ch); ์ ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฝ์์ค์ง๋ง
์๋์ ๊ฐ์ด ์ฌ์ฉํ๋๊ฒ ๋ ์์ ํ๋ค๊ณ ํฉ๋๋ค.
CString test = "abc";
char * ch = test.GetBuffer(0); //GetBuffer(0) ์๋ฏธ : test๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ฌธ์์ด ๋งํผ ๊ฐ์ง๊ณ ์จ๋ค
AfxMessageBox(ch);