2012-05-09 25 views
1

作業的一部分任務是加載兩個文本文件,並使用動態分配的char數組將其內容保存到一個類中。 這是我的課。我可以改進一下嗎?在動態分配的char數組中保存文件的內容類

Content.hpp

class Content 
{ 
public: 
    Content(char* pContent); 
    ~Content(); 
    char* getContent(); 
private: 
    char* data; 
}; 

Content.cpp

#include <cstring> 
#include "Content.h" 

using namespace std; 

Content::Content(char* pContent){ 
    data = new char[sizeof pContent]; 
    strcpy(data, pContent); 
} 

Content::~Content(){ 
    delete[] data; 
} 

char* Content::getContent(){ 
    return data; 
} 
+3

您確定這將按預期工作嗎?在'Content.cpp'中,這肯定不起作用 - 'data = new char [sizeof pContent]'。 'pContent'是一個指針,所以'sizeof(pContent)'會返回'sizeof(char *)'。 – birryree

+0

即將試用:) – Hedge

+0

「我可以改進什麼?」對於http://codereview.stackexchange.com會是一個更好的問題。 –

回答

2

你應該strlen(pContent) + 1取代sizeof pContent,如果你存儲的字符串(它似乎你)。這是因爲字符數組將衰減到指針 C & C++,它不保留長度。

+0

謝謝,我編輯了第一篇文章,並編譯了這個改動。它完美無瑕。 – Hedge

+1

@在這裏保留在stackoverflow,這是不正常的做法編輯您的帖子與代碼更改建議作爲答案,因爲它刪除上下文的答案。結果,我回滾了你的問題。 –

1

考慮聲明const char* getContent()而不是char* getContent(),因爲它返回一個私人數據成員,您可能想防止被外部修改。

相關問題