c++ 内存分区/char* memcpy/string length/string size*
int main() {
string t1("abcd");
string t2;
// x, y指向的地址相同(字符串存放到常量区,看下方图示), 存放x, y本身的地址是不相同的,
const char* x = "abcd";
const char* y = "abcd";
char dest[100];
// 将t1.c_str()中的内容拷贝到dest中
// 拷贝的长度,是字符串长度(strlen(t1.c_str())) + 结束符长度1('\0')
memcpy(dest, t1.c_str(), strlen(t1.c_str()) + 1);
// 下面两种输出完全相同
cout << "t1 string:" << t1 << endl;
printf("t1 string:%s\n", t1.c_str()); //返回一个以'\0'终止的c字符串
// size与length完全相同, length是因为沿用C语言的习惯而保留下来的,string类最初只有length,引入STL之后,
// 为了兼容又加入了size,它是作为STL容器的属性存在的,便于符合STL的接口规则,以便用于STL的算法。
printf("t1.size = %lu\n", t1.size()); //返回当前字符串的大小
printf("t1.length = %lu\n", t1.length()); //返回当前字符串的长度
return 0;
}
下方分区,不包括代码段区