// STL의 string이 가지고 있는 단위전략패턴의 개념
// STL의 string은 문자열의 비교를 위해 단위전략클래스를 사용하고 있다.
// 사용자가 만들어서 전달할수도있다.
struct my_traits : public char_traits<char>
{
// 두문자가 같은 지를 비교하기 위해 아래함수를 호출한다.
static bool eq(char c1, char c2)
{
return toupper(c1) == toupper(c2);
}
static bool lt(char c1, char c2)
{
return toupper(c1) < toupper(c2);
}
static int compare( const char* s1, const char* s2, size_t n )
{
return memicmp( s1, s2, n );
}
// 그 외의 몇개의 함수를 더 제공해야 한다.
// 하지만 상속 받았으므로 부모 것을 그냥 사용 할 수도 있다.
};
typedef basic_string<char, my_traits, allocator<char> > ci_string;
void main()
{
// 템플릿 인자를 사용하는 단위전략, 함수 단위전략보다 다양한 작업가능.
// 또, 컴파일시간에 결정되므로 오버헤드도 줄인다.
// basic_string<char, my_traits, allocator<char> > s1 = "AA";
// 유니코드, 단위전략, 할당
ci_string s1 = "hello";
ci_string s2 = "HELLO";
//string s1 = "hello";
//string s2 = "HELLO";
if( s1 == s2 )
{
cout << "same" << endl;
}
else
{
cout << "NotSame" << endl;
}
}