我需要在一个类中存储一个字符数组,然后返回它。我不得不承认我对指针有点困惑并且已经尝试了我能想到的一切但无法让它工作。这是我拥有的:
#include <iostream>
using namespace std;
class Test {
public:
void setName(char *name);
char getName();
private:
char m_name[30];
};
void Test::setName(char *name) {
strcpy(m_name, name);
}
char Test::getName() {
return *m_name;
}
void main() {
Test foobar;
char name[] = "Testing";
foobar.setName(name);
cout << foobar.getName();
}
当然,我希望 setName() 将字符串“Testing”存储在类内部,而 getName() 应该返回“Testing”。但是,我只得到第一个字母 T。我做错了什么?
我想我应该使用标准字符串,但首先我想了解为什么这不起作用。据我所知,这也适用于 char 数组吗?
最佳答案
只返回一个指针:
const char* Test::getName() const
{
return m_name;
}
并为 class Test
添加一个构造函数,它将 null 终止封装的数组:
Test::Test()
{
m_name[0] = 0;
}
这样,如果有人实例化 class Test
并且没有在实例上调用 setName()
,您就不会自找麻烦。
关于c++ - 将char数组存储在一个类中然后返回它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1642091/