This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: [RFC] libstdc++/9817 or "passing C++ strings to C functions"


Paolo Carlini wrote:
> However, I have a major concern: what about the similar issue 
> we have with
> collate::transform? collate::compare and collate::transform 
> should be fixed in a
> similar way, not only for general consistency sake, but also 
> because they must
> be able to work together.

Isn't it possible to use the same strategy? That is break the
string into chunks separated by \0, then transform each chunk
with strxfrm (again, untested code):

const char* p = str.c_str();
const char* pend = str.c_str() + str.length();

char buf[BIGNUM];
string res;

for (;;)
{
  size_t n = strxfrm(buf, p, BIGNUM);
  res.insert(res.end(), buf, buf + n);
  p += strlen(p);
  if (p == pend)
    break;
  ++p;
  res.push_back('\0');
}

return res;

Petur


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]