如何获取/设置字符数组

how to get/set char array?

本文关键字:设置 字符 数组 获取 何获取      更新时间:2023-10-16

我试图在字符数组中排序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();
}

您应该使用现代c++风格,例如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;

这将为您做内存管理,以及调整字符串向量的大小和插入空字符串,如果有任何空白