Search code examples
c++arraysstdstring

How can i access the char array inside of an std::string?


I was given a task to write a file system in Linux that simulates a storage device as a file.

One of the functions I was given needs to read data inside a "file". To do so I have a function that's supposed to return an std::string.

How can I read the data out of the file with the following function directly into an std::string?

void read(int addr, int size, char *ans)

Is there a way to pass the char array inside of an std::string as a parameter to this function? All of the methods and member functions I have encountered so far only return const char* which doesn't work in this case.

Thanks!


Solution

  • The conventional way of doing this is to pass a pointer to the string’s first character. This is guaranteed to work because the standard guarantees that the characters inside a std::basic_string are stored contiguously ([basic.string]/2).

    Thus,

    read(addr, str.size(), & str[0]);
    

    works, but only if you have previously resized the string to a non-zero size. Additionally, your read function doesn’t tell you how many characters were read. There needs to be some functionality in your IO API to tell you this.