Example #1
0
collate_byname<char>::string_type
collate_byname<char>::do_transform(const char* low, const char* high) const {
  size_t n = _Locale_strxfrm(_M_collate, NULL, 0, low, high - low);

  // NOT PORTABLE.  What we're doing relies on internal details of the
  // string implementation.  (Contiguity of string elements and presence
  // of trailing zero.)
  string_type buf(n, 0);
  _Locale_strxfrm(_M_collate, &(*buf.begin()), n + 1, low, high - low);
  return buf;
}
Example #2
0
collate_byname<char>::string_type
collate_byname<char>::do_transform(const char* low, const char* high) const {
  size_t n = _Locale_strxfrm(_M_collate,
                             NULL, 0,
                             low, high - low);

  __vector__<char, allocator<char> > buf(n);
  _Locale_strxfrm(_M_collate, &buf.front(), n,
                              low, high - low);

   char& __c1 = *(buf.begin());
   char& __c2 = (n == (size_t)-1) ? *(buf.begin() + (high-low-1)) : *(buf.begin() + n);
   //   char& __c2 = *(buf.begin() + n);
   return string_type( &__c1, &__c2 );
}