相关疑难解决方法(0)

变量大小的Struct C++

这是在C++中制作可变大小结构的最佳方法吗?我不想使用vector,因为初始化后长度不会改变.

struct Packet
{
    unsigned int bytelength;
    unsigned int data[];
};

Packet* CreatePacket(unsigned int length)
{
    Packet *output = (Packet*) malloc((length+1)*sizeof(unsigned int));
    output->bytelength = length;
    return output;
}
Run Code Online (Sandbox Code Playgroud)

编辑:重命名变量名称和更改的代码更正确.

c++ struct variable-length

20
推荐指数
4
解决办法
2万
查看次数

可以利用std :: basic_string来实现具有长度限制的字符串吗?

我正在使用一个低级API,它接受一个char*和数字值来分别表示一个字符串及其长度.我的代码使用std::basic_string适当的翻译并调用这些方法.不幸的是,这些方法中的许多都接受不同大小的字符串长度(即max(unsigned char),max(short)等等),而且我很难编写代码以确保我的字符串实例不超过规定的最大长度.低级API.

默认情况下,std::basic_string实例的最大长度受最大值size_t(max(unsigned int)或max(__int64))的约束.有没有办法操纵实现的traits和allocator实现,std::basic_string以便我可以指定自己的类型来代替size_t?通过这样做,我希望利用实现中的任何现有边界检查std::basic_string,因此在执行转换时我不必这样做.

我的初步调查表明,如果不编写我自己的字符串类,这是不可能的,但我希望我忽略了一些东西:)

c++ string templates stl stdstring

6
推荐指数
1
解决办法
2508
查看次数

标签 统计

c++ ×2

stdstring ×1

stl ×1

string ×1

struct ×1

templates ×1

variable-length ×1