実はEffective STLで大文字、小文字を区別しない比較
方法として以下のコードがあるのですが、これでは一致を
判定できないのでは?と思ったんです。

bool ciStringCompare(const string &s1, const string &s2)
{
return lexicographical_compare(s1.begin(), s1.end(),
s2.begin(), s2.end(),
ciCharLess);
}

// 1文字の比較
bool ciCharLess(char c1, char c2)
{
return tolower(static_cast<unsigned char>(c1)) <
tolower(static_cast<unsigend char>(c2));
}