次のテンプレート関数は、文字列の終端にあるナル文字へのポインタを返します。文字列は、char型またはwchar_t型の配列はもちろん、他の文字様のデータを扱うための型であってもかまいません。ただし、その型に対するstd::char_traitsクラステンプレートの特殊化が行われていなければなりません。
0 1 2 3 4 5 6 7 8 9 10 11 12 |
template <typename CharT> CharT* strend(CharT* s) { return s + std::char_traits<CharT>::length(s); } template <typename CharT> const CharT* strend(const CharT* s) { return s + std::char_traits<CharT>::length(s); } |
今回は関数を多重定義しましたが、std::remove_cvで型修飾子を除去してひとつにまとめてもよいでしょう。