I have always seen const char * used in this way, and libc makes assumptions to this effect.
During an API review, I said const char * should be assumed to be a NULL terminated string, then someone said it doesn't have to be - so no assumptions can be made.
We can still be defensive making assumptions, but we can write WAY less code.
Given all the libc functions that use it this way, is there anything in either the C or C++ ISO Standard that says it MUST be a NULL terminated string?