来自c_str的C++ memcpy到char*

Max*_*Max 8 c++ string char memcpy

我已经做了一些基本的阅读,并从我收集的内容.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;
}
Run Code Online (Sandbox Code Playgroud)

这个memcpy是否会确保我将一个以null结尾的字符串复制到我的变量中(假设我的字符串来自较短的长度)?

Nee*_*asu 5

memcpy不知道什么是字符串。你给它一个复制范围。它取决于strlen这里提供范围的终止点


ron*_*nag 5

您应该std::string用来复制字符串。但是,如果您想要这样做,则应使用strcpy而不是memcpy

int main(int argc, char** argv)
{
  std::string from = "hello";
  char to[20];
  strcpy(to, from.c_str());
  std::cout<< to << std::endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)