如何获取/设置char数组?

时间:2013-03-29 22:36:37

标签: c++

我正在尝试在char数组中对2个值进行排序并将其读回。编译时没有错误/警告。但程序在启动时崩溃了?

#define s_size 9

struct _struct {
public:

    void SetItemName(int i, char *c) {
        strcpy(item[i], c);
    }

    const char *GetItemName(int i) const {
        return item[i];
    }
private:
    char* item[s_size];
};
_struct mystruct;




void Getvalue()
{
    printf(mystruct.GetItemName(0));
}

void Setvalue( )
{
    mystruct.SetItemName(0,"hello");
    mystruct.SetItemName(1,"world");
    Getvalue();
}

1 个答案:

答案 0 :(得分:3)

您应该使用modern C++ style,因此std::vector<std::string>

#include <cstddef>
#include <string>
#include <utility>
#include <vector>

struct {
public:
    void SetItemName(std::size_t i, std::string s) {
        if (i >= items.size()) {
            items.resize(i + 1);
        }
        items[i] = std::move(s);
    }

    std::string const& GetItemName(std::size_t i) const {
        return items[i];
    }

private:
    std::vector<std::string> items;
} mystruct;

这将为您进行内存管理,以及调整字符串向量并在有空位时插入空字符串。