// 大文字変換、小文字変換には、
// どうも Cで言う ctype.h が必要なようで..

#include <iostream>
#include <string>
#include <algorithm>
#include <cctype>

using namespace std;

char
upper_ch( const char c )
{
	return static_cast<char>( toupper( c ) );
}

string &
upper_string( const string &s1, string &s2 )
{
	s2 = s1;
	transform( s1.begin(), s1.end(), s2.begin(), upper_ch );
	return s2;
}


char
lower_ch( const char c )
{
	return static_cast<char>( tolower( c ) );
}

string &
lower_string( const string &s1, string &s2 )
{
	s2 = s1;
	transform( s1.begin(), s1.end(), s2.begin(), lower_ch );
	return s2;
}


int
main()
{
	string s;

	upper_string( "fooBAR", s );
	cout << "upper : " <<  s << endl;

	lower_string( "fooBAR", s );
	cout << "lower : " << s << endl;

	return 0;
}

/*
/*	transform() で結構楽にできますが、
/*	大文字/小文字変換って もっと他にスマートなやり方ってないのだろうか?
/*	知っていたら教えて下さい。
/**/