【小ネタ】大文字と小文字を無視した文字列比較

2013年7月8日

更新するようなネタがないので、コネタでものっけときます。
枯れ木も山の賑わいな如く、糞な記事もブログの賑わいです。

strcmpならこんな感じ

template<typename _TYPE>
long strcmp_nocase( const _TYPE * _param1, const _TYPE * _param2 )
{
    std::basic_string<_TYPE>    param1(_param1);
    std::basic_string<_TYPE>    param2(_param2);
    std::transform( param1.begin(), param1.end(), param1.begin(), toupper );
    std::transform( param2.begin(), param2.end(), param2.begin(), toupper );
    return param1.compare( param2 );
};

strncmpならこんな感じ

template<typename _TYPE>
long strncmp_nocase( const _TYPE * _param1, const _TYPE * _param2, const size_t length )
{
    std::basic_string<_TYPE>    param1(_param1);
    std::basic_string<_TYPE>    param2(_param2);
    std::transform( param1.begin(), param1.end(), param1.begin(), toupper );
    std::transform( param2.begin(), param2.end(), param2.begin(), toupper );

    return param1.compare(0, length, param2.c_str(),length );
};

別にこだわりのポイントはなく、wchar_tかcharかわからんので、templateにしてるというだけですね。


C++ | majin | 19:20 | Comments (0)

コメントはまだありません »

No comments yet.

コメントRSS

Leave a comment

Copyright © MAJIN_T
Powered by WordPress