0

(我只是休闲地使用 C++,所以请原谅这个愚蠢的问题。)

我想编写一个在终端中工作的简单电子表格程序(通过 ncurses)。主要是个人熏陶。我想将单元格存储为链表,这样每次我想移动或插入行时就不必重新分配一堆数据;每个单元格都是链表中的一个节点,其中包含单元格的数据。数据将由 ASCII 字符组成。

相关考虑:当然,必须调整其中一些单元格的大小以容纳更多字符。

问题:我应该使用什么数据类型来存储单元格内容?

想法:我从来没有使用过 std::string 并且在尝试在 D 中编程的相当糟糕的经历之后我有点怀疑这个想法:)。但我当然愿意接受它们并没有那么糟糕的可能性。我正在考虑使用 char arrays[],它非常符合要求并且符合我的 C 直觉。我还偶然发现了在查看 StackOverflow 时使用 std::vector 的建议,这似乎更好,因为它们很容易调整大小,但我担心这可能会被认为是笨拙的。

非常感谢。

4

1 回答 1

0

如果您要存储“字符串”,那么std::string将是一个起点。这些允许调整大小并且只占用比char *[如果要调整字符串大小必须使用的空间多一点的空间-并且您确实想加载行长于 X 的文件-无论 X 是什么, 正确的?]。事实上,在一个典型的实现中,size_t指针之上和之外只有 2 个变量,仅此而已。而且您可能至少需要其中一个char *来跟踪实际字符串的长度以及为字符串分配的内存大小 - 因为您不想被调用newstrcpy并且delete每次字符串更改大小时-除非您是真正的受虐狂。(有点自虐是好的,这是成为软件开发人员的一部分 - 如果一点痛苦阻止你,你可能会在你取得任何成就之前放弃)

在文本编辑器中,您将不断地插入、拆分和删除部分字符串,因此在std::string类中可以使用这些功能。以及“为您记录记忆”。

于 2013-05-13T05:44:43.563 回答