i have std::string variable. , need put bytes array of unsigned chars it. know first byte , the legth.
i can use std::string::assign function. i've done it.
but want solve issue in right way using memcpy function.
std::string newstring; memcpy(&newstring, &bytes[startindex], length); i know wrong. have researched , found ideas using std::vector.
please me find elegant solution issue.
since we're constructing string, there std::string constructor takes 2 iterators:
template< class inputit > basic_string( inputit first, inputit last, const allocator& alloc = allocator() ); which can provide:
std::string newstring(&bytes[startindex], &bytes[startindex] + length); if we're not constructing string , instead assigning existing one, should still prefer use assign(). precisely function for:
oldstring.assign(&bytes[startindex], &bytes[startindex] + length); but if insist on memcpy() reason, need make sure string has sufficient data copied into. , copy using &str[0] destination address†:
oldstring.resize(length); // make sure have enough space! memcpy(&oldstring[0], &bytes[startindex], length); †pre-c++11 there technically no guarantee strings stored in memory contiguously, though in practice done anyway.
Comments
Post a Comment