當使用某些庫函數(例如strftime()
,strcpy()
,MultiByteToWideChar()
),其與字符陣列(而不是std::string
的)之一具有2個選擇處理:字符數組大小使用特定庫函數
- 使用固定尺寸陣列(例如
char buffer[256];
),這是因爲串長度限制 使用
new
分配所需尺寸,這也是不好的當一個人想要創建一個效用函數這樣明顯不好:char * fun(void) { char * array = new char[exact_required_size]; some_function(array); return array; }
因爲這樣的功能的用戶必須
delete
array
。
而第二個選項甚至不是總是可能的,如果一個人不能使用有問題的功能(當一個無法預知的功能將一個字符串多久返回)之前知道確切的數組的大小/長度。
完美的方法是使用std::string
,因爲它具有可變長度,並且它的析構函數負責解除分配內存,但許多庫函數不支持std::string
(不管它們應該是另一個問題)。
好的,那有什麼問題?那麼 - 我應該如何使用這些功能?使用固定大小的數組或使用new
並使我的函數的用戶擔心釋放內存?或者,也許實際上是我沒有想到的順利解決方案?
我不知道我是否理解 - 你說我可以這樣做:'std :: string buffer; strcpy(buffer.data(),「text」);'? – NPS 2013-05-02 23:35:53