我使用的接收数据作为图书馆vector
的char
秒.我需要传递string
给图书馆.
我想使用std::vector
接受迭代器的构造函数来执行转换 - 但是想知道是否有更好的方法呢?
/*Note: json_str is of type std::string*/
const std::vector<char> charvect(json_str.begin(), json_str.end());
Run Code Online (Sandbox Code Playgroud)
Xeo*_*Xeo 31
不,这就是这样做的方法,用字符串中的数据直接初始化向量.
正如@ildjarn在他的评论中指出的那样,如果由于某种原因你的数据缓冲区需要以空值终止,你需要明确地添加它charvect.push_back('\0')
.
另请注意,如果要重用缓冲区,请使用assign
带有迭代器的成员函数.
Joh*_*ing 15
你的填充方法vector
很好 - 事实上,在大多数情况下它可能是最好的.
但是,你知道,这不是唯一的方法.您也可以简单地将string
in 的内容复制到vector<char>
.当你有一个vector
已经实例化的,或者你想要在末尾附加更多数据时 - 或者在任何时候,真的,这将是最有用的.
例如,s
a std::string
和v
a是std::vector<char>
:
std::copy( s.begin(), s.end(), std::back_inserter(v));
Run Code Online (Sandbox Code Playgroud)
与构造函数的情况一样,如果你需要一个null-terminator,那么你需要自己推回:
v.push_back('\0');
Run Code Online (Sandbox Code Playgroud)