@@ -551,10 +551,7 @@ template <class _Elme> class basic_string : public std::basic_string<_Elme> {
551
551
basic_string<_Elme> lower (void ) const noexcept ;
552
552
basic_string<_Elme> lstrip (void ) const ;
553
553
basic_string<_Elme> lstrip (basic_string<_Elme> chars) const ;
554
- void partition (basic_string<_Elme> sep, basic_string<_Elme> &dst1,
555
- basic_string<_Elme> &dst2, basic_string<_Elme> &dst3) const ;
556
- template <typename _Iterable>
557
- void partition (basic_string<_Elme> sep, _Iterable &iterable) const ;
554
+ std::tuple<basic_string<_Elme>, basic_string<_Elme>, basic_string<_Elme>> partition (basic_string<_Elme> sep) const ;
558
555
basic_string<_Elme>
559
556
pyreplace (basic_string<_Elme> old, basic_string<_Elme> _new,
560
557
size_t count = std::numeric_limits<size_t >::max()) const ;
@@ -563,10 +560,7 @@ template <class _Elme> class basic_string : public std::basic_string<_Elme> {
563
560
int rindex (basic_string<_Elme> sub, int start = 0 ,
564
561
int end = std::numeric_limits<int >::max()) const ;
565
562
basic_string<_Elme> rjust (size_t width, _Elme fillchar = ' ' ) const ;
566
- void rpartition (basic_string<_Elme> sep, basic_string<_Elme> &dst1,
567
- basic_string<_Elme> &dst2, basic_string<_Elme> &dst3) const ;
568
- template <typename _Iterable>
569
- void rpartition (basic_string<_Elme> sep, _Iterable &iterable) const ;
563
+ std::tuple<basic_string<_Elme>, basic_string<_Elme>, basic_string<_Elme>> rpartition (basic_string<_Elme> sep) const ;
570
564
571
565
template <typename _Iterable>
572
566
void rsplit (_Iterable &dst,
@@ -966,30 +960,13 @@ basic_string<_Elme> basic_string<_Elme>::lstrip(basic_string<_Elme> chars) const
966
960
return this ->substr (std::distance (this ->begin (), itr));
967
961
}
968
962
template <class _Elme >
969
- void basic_string<_Elme>::partition(basic_string<_Elme> sep,
970
- basic_string<_Elme> &dst1,
971
- basic_string<_Elme> &dst2,
972
- basic_string<_Elme> &dst3) const
963
+ std::tuple<basic_string<_Elme>, basic_string<_Elme>, basic_string<_Elme>> basic_string<_Elme>::partition(basic_string<_Elme> sep) const
973
964
{
974
- size_t index = this ->find (sep);
965
+ auto index = this ->find (sep);
975
966
if (index == std::basic_string<_Elme>::npos) {
976
- dst1 = *this ;
977
- dst2 = " " ;
978
- dst3 = " " ;
979
- } else {
980
- dst1 = this ->substr (0 , index );
981
- dst2 = sep;
982
- dst3 = this ->substr (index + sep.size ());
967
+ return std::make_tuple (*this , " " , " " );
983
968
}
984
- }
985
- template <class _Elme >
986
- template <typename _Iterable>
987
- void basic_string<_Elme>::partition(basic_string<_Elme> sep,
988
- _Iterable &iterable) const
989
- {
990
- basic_string<_Elme> dst1, dst2, dst3;
991
- this ->partition (sep, dst1, dst2, dst3);
992
- iterable = { dst1, dst2, dst3 };
969
+ return std::make_tuple (this ->substr (0 , index ), sep, this ->substr (index + sep.size ()));
993
970
}
994
971
template <class _Elme >
995
972
basic_string<_Elme> basic_string<_Elme>::pyreplace(basic_string<_Elme> old,
@@ -1042,30 +1019,13 @@ basic_string<_Elme> basic_string<_Elme>::rjust(size_t width,
1042
1019
}
1043
1020
1044
1021
template <class _Elme >
1045
- void basic_string<_Elme>::rpartition(basic_string<_Elme> sep,
1046
- basic_string<_Elme> &dst1,
1047
- basic_string<_Elme> &dst2,
1048
- basic_string<_Elme> &dst3) const
1022
+ std::tuple<basic_string<_Elme>, basic_string<_Elme>, basic_string<_Elme>> basic_string<_Elme>::rpartition(basic_string<_Elme> sep) const
1049
1023
{
1050
- auto index = this ->pyrfind (sep);
1051
- if (index == -1 ) {
1052
- dst1 = " " ;
1053
- dst2 = " " ;
1054
- dst3 = *this ;
1055
- } else {
1056
- dst1 = this ->substr (0 , index );
1057
- dst2 = sep;
1058
- dst3 = this ->substr (index + sep.size ());
1024
+ auto index = this ->rfind (sep);
1025
+ if (index == std::string::npos) {
1026
+ return std::make_tuple (" " , " " , *this );
1059
1027
}
1060
- }
1061
- template <class _Elme >
1062
- template <typename _Iterable>
1063
- void basic_string<_Elme>::rpartition(basic_string<_Elme> sep,
1064
- _Iterable &iterable) const
1065
- {
1066
- basic_string<_Elme> dst1, dst2, dst3;
1067
- this ->rpartition (sep, dst1, dst2, dst3);
1068
- iterable = { dst1, dst2, dst3 };
1028
+ return std::make_tuple (this ->substr (0 , index ), sep, this ->substr (index + sep.size ()));
1069
1029
}
1070
1030
template <class _Elme >
1071
1031
template <typename _Iterable>
0 commit comments