int m, p, i, flag = 0;
char* a = new char[100];
char* b = new char[100];
while (1) {
cout << endl << "请输入集合1:" << endl;
cin >> a;
int length1 = sizeof(a) - 1;
cout << length1;
//char* a1 = new char[length1];
for (i = 0; i < length1; i++) {
//a1[i] = a[i];
if (a[i] >= 'a' && a[i] <= 'z')
cout << a[i];
sa.insert(a[i]); //插入元素到集合sa
}
delete[] a;
a = NULL;
这里sizeof(a)实际上得到的是char*指针本身所占的内存空间大小,而不是数组的长度。可以改用strlen()来求字符串长度。
char* a = new char[100];
这种定义及内存申请方式,表明a是一个char*(字符指针),而指针长度通常为4byte,a指向一个动态申请的长度为100的字符数组。
因此,你用sizeof(a) 得到的值总会是4。
如果要求字符串长度,可以用strlen(a),需要字符串a以'\0'结尾。
或者,如果想用一个类(模板)封装起来,可以用std::string a。cin >> a
以后,可以通过a.size()得到字符串长度,字符串无需以'\0'结尾。