我有一个std::vector<char>大小约为1500.但是,当我尝试使用vector::data将数据提取到字符串时,它不起作用.
std::vector<char> testVector;
//insert data to test vector
std::string temp = testVector.data();
Run Code Online (Sandbox Code Playgroud)
当我temp在此之后打印时,它只是打印DATA.当我将datain 的大小减小vector到100-200时,它正常工作并且符合预期.但是当尺寸增加时,它就会停止工作.我尝试使用string::reserve,仍然没有.
我错过了什么?
将char*字符串分配给字符串需要以空字符结尾的字符串.
要将(非空终止)复制vector<char>到a中string,请使用:
std::string temp(testVector.data(), testVector.size());
Run Code Online (Sandbox Code Playgroud)
或者(这更加惯用,因为它可以与任何容器一起使用):
std::string temp(testVector.begin(), testVector.end());
Run Code Online (Sandbox Code Playgroud)