将 char 数组存储在一个类中,然后返回它

新手上路,请多包涵

我需要在一个类中存储一个 char 数组,然后返回它。我不得不承认我对指针有点困惑,并且已经尝试了我能想到的所有东西,但无法让它发挥作用。这是我所拥有的:

 #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。我做错了什么?

我想我应该使用 std 字符串,但首先我想了解为什么这不起作用。据我所知,这也应该适用于 char 数组?

原文由 Tatu Ulmanen 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 350
1 个回答

只需返回一个指针:

 const char* Test::getName() const
{
    return m_name;
}

并为 class Test 添加一个构造函数,这将使封装的数组为空终止:

 Test::Test()
{
    m_name[0] = 0;
}

这样如果有人实例化 class Test 并且没有在实例上调用 setName() ,您就不会自找麻烦。

原文由 sharptooth 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题