Я проделал немного базового чтения и из того, что я собрал .c_str() всегда имеет нулевой терминатор.C++ memcpy для char * from c_str
У меня есть довольно простая программа на C++:
int main(int argc, char** argv)
{
std::string from = "hello";
char to[20];
memcpy(to, from.c_str(), strlen(from.c_str())+1);
std::cout<< to << std::endl;
return 0;
}
Будет ли тетсра обеспечить, чтобы скопировать над нулем строкой в моем переменном (при условии, что моя строка из короче в длине)?
Да, так как 'c_str()' всегда оканчивается нуль, но есть какая-либо конкретная причина для этого? – chris
Зачем вы это делаете? Одной из основных сильных сторон std :: string является * not * использование необработанных массивов char, подобных этому. –
Кстати, 'size()' или 'length()' даст вам постоянный размер времени, тогда как 'strlen()' является линейным. – chris