Biraz temel okuma yaptım ve topladığımdan .c_str() her zaman boş bir sonlandırıcıya sahip.C++ memcpy to char * from c_str
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;
}
ben (benim dize gelen uzunluğunda kısa olması şartıyla) benim değişkene boş sonlandırılmış dize üzerinden kopyalama sağlamak memcpy Will:
Ben oldukça basit bir C++ program var?
Evet ait
strcpy
, kullanmalıdır 'c_str()' boş sonlandırılmış her zaman, ama bu iş için herhangi bir neden yoktur? – chrisNeden bunu yapıyorsun? Std :: string'in birincil güçlü yönlerinden biri, * char * 'ın bu gibi ham dizileri kullanmasıdır. –
Bu arada, 'size()' veya 'length()' size sabit bir zaman boyutu kazandıracak, strlen() ise lineerdir. – chris