2013-05-13 86 views
0

(我只用C++消遣,所以原諒noobish問題。)C++:在鏈表存儲串

我想寫一個簡單的電子表格程序,在終端工作(通過ncurses的)。主要是個人的薰陶。我想將單元格存儲爲鏈接列表,這樣我就不必每次重新分配一堆數據來移動或插入行;每個單元格都是鏈接列表中的一個節點,它包含單元格的數據。數據將由ASCII字符組成。

相關考慮:當然,這些單元中的一些必須調整大小以容納更多字符。

問題:我應該使用什麼數據類型來存儲單元格內容?

想法:我從來沒有使用過std :: string,並且對於嘗試在D中編程的相當酸味的體驗之後的想法持懷疑態度:)。但我肯定會接受他們沒那麼糟糕的可能性。我正在考慮使用char數組[],它非常好地符合法案,並且與我的C直覺一致。我還偶然發現了在查看StackOverflow時使用std :: vector的建議,這看起來更好,因爲它們很容易調整大小,但我擔心這可能會被認爲是笨拙的。

G'day和thankee很多。

+0

如果你想要一個鏈表,你可以看看'std :: list'。不要害怕使用'std :: string'。它比'char []'更容易也更安全。 – juanchopanza 2013-05-13 05:36:15

+0

不要重新發明輪子。只需使用'std :: string'和其中一個[container](http://en.cppreference.com/w/cpp/container)類模板。 – 2013-05-13 05:37:03

回答

0

如果你正在存儲一個「字符串」,那麼std::string將是一個起點。這些允許調整大小,只佔用比char *更多的空間[如果要調整字符串的大小,您必須使用這個空間 - 而且您確實想要加載比X行長的文件 - 不管X是多少是對的?]。事實上,在一個典型的實現中,只有一個變量超出了一個指針,就是這樣。而且您可能至少需要其中一個跟隨您的char *以跟蹤實際字符串的長度和您爲字符串分配的內存大小 - 因爲您不想要調用newstrcpydelete每一次一個字符串改變大小 - 除非你是一個真正的受虐狂。 (有點受虐自然是好的,這是成爲一名軟件開發人員的一部分 - 如果有一點點痛苦阻止了你,你可能會放棄在你做任何事情之前)

在文本編輯器中,你將不斷插入,分割並刪除部分字符串,因此在std::string類中提供了這些功能。以及「記住你的記憶」。

+0

那麼,這很好解釋它。非常感謝你。 :d – 2013-05-13 05:53:33