writing directly to std::string internal buffers

前端 未结 9 1137
猫巷女王i
猫巷女王i 2020-11-29 07:22

I was looking for a way to stuff some data into a string across a DLL boundary. Because we use different compilers, all our dll interfaces are simple char*.

Is ther

9条回答
  •  一生所求
    2020-11-29 07:50

    I'm not sure the standard guarantees that the data in a std::string is stored as a char*. The most portable way I can think of is to use a std::vector, which is guaranteed to store its data in a continuous chunk of memory:

    std::vector buffer(100);
    FunctionInDLL(&buffer[0], buffer.size());
    std::string stringToFillIn(&buffer[0]);
    

    This will of course require the data to be copied twice, which is a bit inefficient.

提交回复
热议问题