我想将C风格的字符串转换为字节向量.一个可行的解决方案是手动转换每个字符并将其推送到矢量上.但是,我对这个解决方案并不满意,并希望找到一种更优雅的方式.
我的一次尝试如下:
std::vector<byte> myVector;
&myVector[0] = (byte)"MyString";
Run Code Online (Sandbox Code Playgroud)
哪些错误并让我得到一个
错误C2106:'=':左操作数必须是l值
这样做的正确方法是什么?
最基本的东西是:
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)
STL容器vector 总是取得所有权,即他们管理自己的记忆.您无法修改STL容器内部管理的内存.因此,您的尝试(以及任何类似的尝试)注定要失败.
唯一有效的解决方案是复制内存或编写一个新的STL样式的容器,该容器不会占用它访问的内存.