2012-01-27 27 views
0

是否有可能創建類似C的字符串(char *)數據只能設置一次的結構?是否有可能創建只有一次C可設置字符串(char *)數據的結構?

會是這樣的:

struct raw { 
static const char * request; 
}; 

我需要的是結構,可以在寫入一次數據,並以這種東西應該string.c_str(的可轉換結果)有什麼方法來創建這樣的事情在C++?

+0

我不想,如果可以實現讀/寫的基礎設施。 – myWallJSON 2012-01-27 02:09:12

+1

只有一次?每個結構實例或每個進程的生命週期 – 2012-01-27 02:10:33

+0

每個結構實例 – myWallJSON 2012-01-27 02:26:58

回答

1

你可以這樣做:

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

這不會阻止代碼更改指針 – 2012-01-27 02:58:45

0

出了什麼問題好老的封裝?問題標籤說C++,因此允許類和私人數據。在類方案中,私有變量可以通過類方法寫入,但不能由程序的其餘部分寫入。這將覆蓋風險降低到可以忽略的程度。另一方面,如果你想防範超級細菌和惡意影響,那麼沒有任何缺乏記憶保護的人工操作將會有所幫助。在Windows上,這是通過VirtualAlloc()/ VirtualProtect()API完成的。

2

你應該說明要解決的問題是什麼,而不是你想要的解決方案的問題。什麼是你真的需要?

的回答你的問題其實很簡單,但我擔心的問題是更深我你的設計...

struct raw { 
    const char * const data; 
}; 

raw r = { "hi there" }; 

或者你可以(應該)提供一個構造函數。現在如果你的意思是用一個字符串調用c_str()的結果初始化它,那麼你肯定會遇到麻煩,因爲返回的指針只有在修改字符串的下一個操作之前纔有效。你可以strdup的C字符串,但你必須管理重複串...

0

然後是這樣的:

struct raw { 
    raw(const char* request_in):request(request_in) {} 
    const char* const request; 
}; 
相關問題