KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
In C++11, we know that std::string is guaranteed to be both contiguous and null-terminated (or more pedantically, terminated by charT() , which in the case of char is the null character 0). There is this C API I need to use that fills in a string by pointer. It writes the whole string + null terminator. In C++03, I was always forced to use a vector<char> , because I couldn't assume that string was contiguous or null-terminated. But in C++11 (assuming a properly conforming basic_string class, which is still iffy in some standard libraries), I can. Or can I? When I do this: std::string str(length); The string will allocate length+1 bytes, with the last filled in by the null-terminator. That's good. But when I pass this off to the C API, it's going to write length+1 characters. It's going to overwrite the null-terminator. Admittedly, it's going to overwrite the null-terminator with a null character . Odds are good that this will work (indeed, I can't imagine how it couldn't work). But I don't care about what "works". I want to know, according to the spec , whether it's OK to overwrite the null-terminator with a null character?
Tags (comma-separated)
Save Edits
Cancel