当你需要将string类型(如string s = "1234")转换为字符数组时,应先复制其内容,例如:
char c[20];
string s = "1234";
strcpy(c, s.c_str());
这样操作,因为c_str()返回的是一个临时指针,直接对它进行操作可能会导致错误。其语法为:const char *c_str();
其目的是为了与C语言兼容,因为C语言中没有std::string,所以需要通过string对象的c_str()函数将其转换成字符数组形式。
重要的是,务必配合使用strcpy()等函数来操作c_str()返回的指针,以确保数据的一致性。否则,如下面的例子所示:
const char* c;
std::string s = "1234";
c = s.c_str();
此时,如果后续改变了s的值,如s = "abcd",那么c指向的字符数组也会相应改变,可能会导致预期之外的结果,例如1234变为abcd。