cout腐败的char*

-8 c++ char garbage

我已经编写了一个代码来打印2个工人的名字,但它会打印垃圾.

cout << "highest salary: " << highestSalary.getID() << " " << highestSalary.getName() << endl;

cout << "hardest worker: " << mostHours.getID() << " " << mostHours.getName();
Run Code Online (Sandbox Code Playgroud)

函数getName()在worker类中定义为:

char* Worker::getName()
{
    char temp[20];

    int i;
    strcpy(temp, name);

    return temp;
}
Run Code Online (Sandbox Code Playgroud)

在调试器上经历这一点我尝试将最高级别的帐户放入一个ver char*temp中,并且值是我预期的,让我们说"bob",但是在cout之后值为""和cout印刷垃圾.

Ton*_*ion 8

NO NO NO,您正在返回指向本地函数变量的指针.这就是崩溃的原因.

改为:

std::string Worker::getName()
{
   std::string temp(name); // not sure what type of name is...
   return temp;
}
Run Code Online (Sandbox Code Playgroud)

别忘了#include<string>.

现在你有了真正的C++,而不是C和指针.