以有效的方式将C字符串转换为std :: vector <byte>

Eta*_*tan 5 c++ vector

我想将C风格的字符串转换为字节向量.一个可行的解决方案是手动转换每个字符并将其推送到矢量上.但是,我对这个解决方案并不满意,并希望找到一种更优雅的方式.

我的一次尝试如下:

std::vector<byte> myVector;
&myVector[0] = (byte)"MyString";
Run Code Online (Sandbox Code Playgroud)

哪些错误并让我得到一个

错误C2106:'=':左操作数必须是l值

这样做的正确方法是什么?

GMa*_*ckG 8

最基本的东西是:

const char *cstr = "bla"
std::vector<char> vec(cstr, cstr + strlen(cstr));
Run Code Online (Sandbox Code Playgroud)

当然,如果你知道它,不要计算长度.

更常见的解决方案是使用std::string该类:

const char *cstr;
std::string str = cstr;
Run Code Online (Sandbox Code Playgroud)


Kon*_*lph 5

STL容器vector 总是取得所有权,即他们管理自己的记忆.您无法修改STL容器内部管理的内存.因此,您的尝试(以及任何类似的尝试)注定要失败.

唯一有效的解决方案是复制内存或编写一个新的STL样式的容器,该容器不会占用它访问的内存.