Zrobiłem trochę podstawowego czytania i z tego, co zebrałem. C_str() zawsze ma terminator o wartości NULL.C++ memcpy to char * from c_str
Mam dość prosty program w 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;
}
Will że memcpy upewnić się, że mogę skopiować na sznurku nul do mojego zmiennej (pod warunkiem, że mój ciąg jest krótszy od długości)?
Tak, ponieważ 'c_str()' jest zawsze zakończony zerem, ale czy jest jakiś szczególny powód, dla tej operacji? – chris
Dlaczego robisz to w ogóle? Jedną z głównych zalet std :: string jest * nie * używanie surowych tablic o char w ten sposób. –
Nawiasem mówiąc, 'size()' lub 'length()' przyniosą ci stałą wielkość czasu, podczas gdy 'strlen()' jest liniowa. – chris