#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char string[10];
char* str1 = “mynameis11111”;
strcpy(string,str1);
cout<<sizeof(string)<<endl<<string;
}
为什么string的长度只有10,可是能输出超长度的内容。
结果是:
10
mynameis11111
#include<cstring>
using namespace std;
int main()
{
char string[10];
char* str1 = “mynameis11111”;
strcpy(string,str1);
cout<<sizeof(string)<<endl<<string;
}
为什么string的长度只有10,可是能输出超长度的内容。
结果是:
10
mynameis11111
解决方案
20
string你定义的时候就是10个大小,之所以可以输出超过10个的长度是应为字符串是以\0结尾的,你可以调试一个这个程序,查看一下内存,这样的数组月结很危险的
20
字符串的拼接并不会检查能否越界了,你这样使用,会占用另外的内存,这种做法是十分危险的。(甚至会造成其他数据的丢失)