c++stringchar

How can you construct a std::string from a char* and a maximum length?


I know the starting address of the string(e.g., char* buf) and the max length int l; of the string(i.e., total number of characters is less than or equal to l).

What is the simplest way to get the value of the string from the specified memory segment? In other words, how to implement string retrieveString(char* buf, int l);.

EDIT: The memory is reserved for writing and reading string of variable length. In other words, int l;indicates the size of the memory and not the length of the string.


Solution

  • std::string str(buffer, buffer + length);
    

    Or, if the string already exists:

    str.assign(buffer, buffer + length);
    

    Edit: I'm still not completely sure I understand the question. But if it's something like what JoshG is suggesting, that you want up to length characters, or until a null terminator, whichever comes first, then you can use this:

    std::string str(buffer, std::find(buffer, buffer + length, '\0'));