CString(CAtlstring)을 사용하면 기본적을 지원하는 기능이지만
stl의 string 을 사용하다보면 불편한점이 한둘이 아니다..
가장먼저 CString
그런데 멀티 플렛폼을 지향하지도 않고
계속해서 윈도우 운영체제에서만 돌아가는 프로그램만을 짤텐데도
불편함을 감수하고 자꾸만 String만 사용하는건 뭐지 -_-;
stl의 string 을 사용하다보면 불편한점이 한둘이 아니다..
가장먼저 CString
#include <atlstr.h>//헤더 #include <iostream>//헤더 /* #ifdef _UNICODE //유니코드일 경우 typedef CAtlStringW CAtlString; #else typedef CAtlStringA CAtlstring; #end typedef CAtlString CString; */ void main() { CString szTest; szTest.format(_T("%d,%s"),10,_T("test")); szTest.MakeUpper(); //대문자로 변환! szTest.MakeLower(); //소문자로 변환! int pos = 0; CString token; while((token = szTest.Tokenize(_T(","),pos)) !=_T("")) //문자열 자르기. 구분자 "," std::cout << token << std::endl; }대부분의 문자열 처리를 CString 에서 다 할수 있다...
그런데 멀티 플렛폼을 지향하지도 않고
계속해서 윈도우 운영체제에서만 돌아가는 프로그램만을 짤텐데도
불편함을 감수하고 자꾸만 String만 사용하는건 뭐지 -_-;
#include <iostream>//헤더 #include <string> #include <boost/algorithm/string.hpp> #include <boost/format.hpp> #include <boost/tokenizer.hpp> typedef std::basic_string<TCHAR> tstring; //CString처럼 프로젝트에 따라서 유니코드 멀티바이트가 되도록.. typedef boost::basic_format<TCHAR> tformat; // boost::format와 boost::wformat를 문자셋에 맞게 쓰기위해.. typedef boost::tokenizer<boost::char_delimiters_separator<TCHAR> ,tstring::const_iterator,tstring> ttokenizer; int main() { tstring str; //string로 CString::format처럼 사용하기. str = boost::str(tformat(_T("1234,567,%d,%s"))%10%_T("TEST"));//%로 구분하는거의 주의할것! boost::algorithm::to_upper(str);//대문자로 변환. boost::algorithm::to_lower(str);//소문자로 변환. boost::char_separatorsep(_T(","));//토큰시 사용할 구분자 // boost::tokenizer<boost::char_separator<TCHAR>> tok(str ,sep); // boost::tokenizer<boost::char_separator<TCHAR>>::iterator iter = tok.begin(); ttokenizer tok(str,sep); ttokenizer::iterator iter = tok.begin() for(;iter!= tok.end(); iter++) { std::cout << *iter << endl; } return 0; }
'C..C++....' 카테고리의 다른 글
BoostPool 사용하기.. (0) | 2011.08.25 |
---|---|
error LNK 2005 xxxx이(가) MSVCPRT(D).lib 혹은 LIBCPMT(D).lib 에 이미 정의되어 있습니다.. 오류날때 대처방법 (0) | 2011.08.02 |
람다(Lambda) 활용하기.! (0) | 2011.06.27 |
c/c++에서 문자열 인코딩 변환! 유니코드 멀티바이트 UTF-8 쉽게 변환해보자~! (5) | 2011.06.17 |
error LNK 2005 xxxx이(가) MSVCRT(D).lib 혹은 LIBCMT(D).lib 에 이미 정의되어 있습니다.. 오류날때 대처방법 (2) | 2011.06.13 |