У меня есть строка
std::string s = "Stack Overflow";
Это мне нужно скопировать в вектор. Вот как я это делаю
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' );
Но я слышал, что операции на полигоне более эффективны. Вот я и думаю о чем-то подобном
std::vector<char> v( s.begin(), s.end());
v.push_back('\0');
Но лучше ли это в данном случае? А как насчет потенциального перераспределения при вставке '\0'?
Еще один подход, который я думаю, заключается в следующем
std::vector<char> v(s.length()+1);
std::strcpy(&v[0],s.c_str());
Возможно быстро, но потенциально небезопасно?
ИЗМЕНИТЬ
Должна быть строка с завершающим нулем, которую можно использовать (чтение/запись) внутри функции C