@@ -937,7 +937,7 @@ string_nodiscard std::size_t find_first( std17::basic_string_view<CharT> text, S
937937namespace string {
938938namespace detail {
939939
940- // Transform case (character):
940+ // Transform case (character):
941941
942942template < typename CharT >
943943string_nodiscard CharT to_lowercase ( CharT chr )
@@ -967,8 +967,22 @@ string_nodiscard std::basic_string<CharT> to_case( std::basic_string<CharT> text
967967} // namespace detail
968968} // namespace string
969969
970- // to_lowercase()
971- // to_uppercase()
970+ // capitalize():
971+
972+ #define string_MK_CAPITALIZE (CharT ) \
973+ string_nodiscard inline std::basic_string<CharT> \
974+ capitalize ( std17::basic_string_view<CharT> text ) \
975+ { \
976+ if ( text.empty () ) \
977+ return {}; \
978+ \
979+ std::basic_string<CharT> result{ to_string ( text ) }; \
980+ result[0 ] = to_uppercase ( result[0 ] ); \
981+ \
982+ return result; \
983+ }
984+
985+ // to_lowercase(), to_uppercase():
972986
973987// template string_nodiscard std::basic_string<CharT> to_lowercase( std17::basic_string_view<CharT> text ) string_noexcept;
974988
@@ -1674,6 +1688,7 @@ string_MK_TO_CASE_CHAR ( char, lowercase )
16741688string_MK_TO_CASE_CHAR ( char , uppercase )
16751689string_MK_TO_CASE_STRING ( char , lowercase )
16761690string_MK_TO_CASE_STRING ( char , uppercase )
1691+ string_MK_CAPITALIZE ( char )
16771692string_MK_JOIN ( char )
16781693string_MK_SPLIT_DELIM ( char )
16791694string_MK_SPLIT_STRING ( char )
@@ -1714,6 +1729,7 @@ string_MK_TO_CASE_CHAR ( wchar_t, lowercase )
17141729string_MK_TO_CASE_CHAR ( wchar_t , uppercase )
17151730string_MK_TO_CASE_STRING ( wchar_t , lowercase )
17161731string_MK_TO_CASE_STRING ( wchar_t , uppercase )
1732+ string_MK_CAPITALIZE ( wchar_t )
17171733string_MK_JOIN ( wchar_t )
17181734string_MK_SPLIT_DELIM ( wchar_t )
17191735string_MK_SPLIT_STRING ( wchar_t )
@@ -1754,6 +1770,7 @@ string_MK_TO_CASE_CHAR ( char8_t, lowercase )
17541770string_MK_TO_CASE_CHAR ( char8_t , uppercase )
17551771string_MK_TO_CASE_STRING ( char8_t , lowercase )
17561772string_MK_TO_CASE_STRING ( char8_t , uppercase )
1773+ string_MK_CAPITALIZE ( char8_t )
17571774string_MK_JOIN ( char8_t )
17581775string_MK_SPLIT_DELIM ( char8_t )
17591776string_MK_SPLIT_STRING ( char8_t )
@@ -1794,6 +1811,7 @@ string_MK_TO_CASE_CHAR ( char16_t, lowercase )
17941811string_MK_TO_CASE_CHAR ( char16_t , uppercase )
17951812string_MK_TO_CASE_STRING ( char16_t , lowercase )
17961813string_MK_TO_CASE_STRING ( char16_t , uppercase )
1814+ string_MK_CAPITALIZE ( char16_t )
17971815string_MK_JOIN ( char16_t )
17981816string_MK_SPLIT_DELIM ( char16_t )
17991817string_MK_SPLIT_STRING ( char16_t )
@@ -1834,6 +1852,7 @@ string_MK_TO_CASE_CHAR ( char32_t, lowercase )
18341852string_MK_TO_CASE_CHAR ( char32_t , uppercase )
18351853string_MK_TO_CASE_STRING ( char32_t , lowercase )
18361854string_MK_TO_CASE_STRING ( char32_t , uppercase )
1855+ string_MK_CAPITALIZE ( char32_t )
18371856string_MK_JOIN ( char32_t )
18381857string_MK_SPLIT_DELIM ( char32_t )
18391858string_MK_SPLIT_STRING ( char32_t )
@@ -1874,6 +1893,7 @@ string_MK_SPLIT_LEFT_STRING( char32_t )
18741893#undef string_MK_TO_CASE_CHAR
18751894#undef string_MK_TO_CASE_STRING
18761895#undef string_MK_TO_CASE_STRING
1896+ #undef string_MK_CAPITALIZE
18771897#undef string_MK_JOIN
18781898#undef string_MK_SPLIT_DELIM
18791899#undef string_MK_SPLIT_STRING
0 commit comments