
But I think interfaces that you are providing is very high-level.
You are right, Alexander, this interface is very high-level. But, IMHO, such interface is good for many cases. Of course, I'll provide iterator-based interface too.
Another comment is performance. For most applications this could be crucial.
Yes. Unfortunately, performance of my solution is not ideal. In some "pure C solutions" (for example, in OpenSSL crypto lib) speed is much faster (upto 10 times). For example, 1000000 chars std::string encoded in 0.226 s with my solution, but in 0.020 s - in some C solutions. But: 1. I am C++ developer, not assembler developer. :-) 2. For some applications speed is not crucial factor. For example, now I write console application for documents signing by RSA keys. What's the big difference whether the license document is encoded/decoded in 0.009 s or in 0.001 s? 3. Performance may be optimized in future. My main goal is provide ready-to-use and simple-to-use utility based on existing Boost iterators that can be used after one minute studying. My solution is not ideal, but it's simple and, IMHO, useful even in present form. I personally would be glad to see such utility in Boost. - Denis