Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么我不能在C++;_C++_String_Character - Fatal编程技术网

C++ 为什么我不能在C++;

C++ 为什么我不能在C++;,c++,string,character,C++,String,Character,这是我接收字符串的代码。 但我不知道是什么引起了问题。 有人知道吗 #include<iostream> #include<cstring> using namespace std; class person{ private: char name[100]; //char * name; public: person(void) : name(){} person(person& myPerson); ~person(v

这是我接收字符串的代码。 但我不知道是什么引起了问题。 有人知道吗

#include<iostream>
#include<cstring>

using namespace std;

class person{
private:
    char name[100];
   //char * name;
public:
    person(void) : name(){}
    person(person& myPerson);
    ~person(void) {delete []name;}
    void read();
    void write();
};

person::person(person& myPerson ){
        strcpy(name ,myPerson.name);
    }

void person::read(){
    cout<< "read name from console: " ;
    cin >> name;                   
}
#包括
#包括
使用名称空间std;
班主任{
私人:
字符名[100];
//字符*名称;
公众:
person(void):name(){}
个人(个人和我的个人);
~person(void){delete[]name;}
无效读取();
无效写入();
};
person::person(person和myPerson){
strcpy(姓名,myPerson.name);
}
void person::read(){
姓名;
}

////////删除
删除[]名称person
的析构函数的code>。您应该只使用
malloc()
new
释放堆分配的内存,而不是堆栈分配的空间,就像您声明的固定大小数组
char name[100]
。此更改将修复在程序退出时执行析构函数时收到的内存错误。

您的代码有许多错误或错误样式

<>首先,建议尽可能使用C++标准库设施。因此,请使用
std::string
而不是
char[SIZE]

其次,使用
intmain{return0;}
而不是
voidmain{}

第三,
删除[]名称将导致内存错误。您正在释放堆栈内存,而不是堆内存


最后,我认为,类名应该从大写字母(人)开始。

<代码>空main <代码>不是合法的C++。使用
int main
。如果您想让它变得简单,只需使用
std::string
。现在,您的程序正处于缓冲区溢出状态。请发布错误消息。您没有告诉我们问题所在。我们应该猜猜吗?@chris oh。。。这是违法的吗?谢谢,我不知道。我会找出什么是“std::string”@IvanPavičIć我没有想到它。下面是消息。**表达式:_BLOCK_TYPE_是有效的(pHead->nBlockUse**,谢谢!我知道了。@CharlseChoi如果这回答了您的问题,请用复选符号标记它。另外,请确保您是正确的。
void person::write(){
    cout << name << endl;
}

void main(void) {
person p1;
p1.read();
//p1.write();

    getchar();   
}