2013-05-13 30 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