(我只是休闲地使用C ++,所以请原谅这个noobish问题。)
我想写一个在终端上工作的简单电子表格程序(通过ncurses)。主要是个人熏陶。我想将单元格存储为链表,以便每次我想移动或插入行时都不必重新分配一堆数据;每个单元格都是链表中的节点,其中包含单元格的数据。数据将包含ASCII字符。
相关考虑:当然,其中一些单元格必须调整大小才能容纳更多字符。
问题:我应该使用什么数据类型来存储单元格内容?
思考:我从未使用过std :: string,并且在尝试使用D :)进行编程之后,我对这个想法持怀疑态度。但我当然愿意接受他们并没有那么糟糕的可能性。我正在考虑使用char数组[],它非常适合该法案并且与我的C直觉一致。我也偶然发现了在查看StackOverflow时使用std :: vector的建议,这似乎更好,因为它们很容易调整大小,但我担心这可能会被认为是笨拙的。
G'day and thankee。
答案 0 :(得分:0)
如果您要存储“字符串”,那么std::string
将是一个起点。这些允许调整大小,只占用比char *
更多的空间[如果你想调整字符串的大小,你必须使用它 - 而你确实要加载那个行长于X的文件 - 不管X是什么,对吗?]。事实上,在一个典型的实现中,只有2个size_t
变量超出指针,而且就是它。你可能至少需要其中一个跟你的char *
一起跟踪实际字符串的长度和你为字符串分配的内存大小 - 因为你不想每次字符串改变大小时都要调用new
,strcpy
和delete
- 除非你是真正的受虐狂。 (有点自虐是好的,这是软件开发人员的一部分 - 如果有点痛苦阻止你,你可能会在你做任何事情之前放弃)
在文本编辑器中,您将不断插入,拆分和删除部分字符串,以便在std::string
类中使用这些函数。以及“为你记忆”。