我有一个字符串
std::string s = "Stack Overflow";
Run Code Online (Sandbox Code Playgroud)
我需要复制到矢量中.这就是我这样做的方式
std::vector<char> v;
v.reserve(s.length()+1);
for(std::string::const_iterator it = s.begin(); it != s.end(); ++it)
{
v.push_back( *it );
}
v.push_back( '\0' );
Run Code Online (Sandbox Code Playgroud)
但我听说范围操作更有效率.所以我在想这样的事情
std::vector<char> v( s.begin(), s.end());
v.push_back('\0');
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,这样做会更好吗?插入'\ 0'时潜在的重新分配怎么样?
我想的另一种方法就是这样
std::vector<char> v(s.length()+1);
std::strcpy(&v[0],s.c_str());
Run Code Online (Sandbox Code Playgroud)
也许速度快但可能不安全?
编辑
必须是一个空终止字符串,可以在C函数内使用(读/写)