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

标签 c++ arrays class char return

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

#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/

相关文章:

python - 将支持功能放在类中的最佳位置在哪里?

arrays - Bash:如何用制表符分隔数组元素 - 并在同一行打印?

javascript - 计算奇偶数函数问题

swift - 在 Swift 中使 Realm Loop 通用且可重用

PHP 在其他类中包含类

arrays - 如何根据嵌套键值删除JSONB列中的数组元素?

C++ 多线程优化

java - 检查字符串是否等价的查询

c++ - 如何隐藏命令窗口并显示 EditBox 控件中的所有潜在错误?

c++ - int (*p)[10] 是如何工作的?