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

Pétur Runólfsson peturr02@ru.is
Mon Feb 24 10:53:00 GMT 2003


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



More information about the Libstdc++ mailing list