是否可以创建C类似字符串(char *)数据只能设置一次的结构?

时间:2012-01-27 02:08:33

标签: c++ string struct char

是否可以创建一个C类似字符串(char *)数据只能设置一次的结构?

会是这样的:

struct raw {
 static const char * request;
};

我需要的是具有只能写入一次的数据的结构,并且对于这个应该是可转换的string.c_str()的结果是否有任何方法可以在C ++中创建这样的东西?

4 个答案:

答案 0 :(得分:2)

您应该说明要解决的问题,而不是您想要的解决方案的问题。你真的需要什么?

你的问题的答案实际上很简单,但我担心问题会更深入你的设计......

 struct raw {
    const char * const data;
 };

 raw r = { "hi there" };

或者您可以(应该)提供构造函数。现在,如果你想用一个字符串调用c_str()的结果来初始化它,那么你肯定会遇到麻烦,因为返回的指针只有在修改字符串的下一个操作之前才有效。你可以strdup c字符串,但是你必须管理重复的字符串......

答案 1 :(得分:1)

你可以这样做:

struct raw {
  raw(const char* request_in) { request = request_in; }
  const char* request;
};

答案 2 :(得分:0)

旧的封装有什么问题?问号标签表示C ++,因此允许使用类和私有数据。在类方案中,私有变量可以通过类方法写入,但不能由程序的其余部分写入。这可以将覆盖的风险降低到可以忽略不计。

另一方面,如果你想要保护它的超级细菌和恶意影响,那么没有任何内存保护的操作会有所帮助。在Windows上,这是通过VirtualAlloc()/ VirtualProtect()API完成的。

答案 3 :(得分:0)

然后像这样:

struct raw {
    raw(const char* request_in):request(request_in) {}
    const char* const request;
};