【发布时间】:2013-04-27 06:48:33
【问题描述】:
当使用一些处理字符数组(而不是std::string's)的库函数(例如strftime()、strcpy()、MultiByteToWideChar())时,有两个选项:
- 使用固定大小的数组(例如
char buffer[256];),由于字符串长度限制,这显然很糟糕 -
使用
new分配所需的大小,这在想要创建这样的实用函数时也很糟糕:char * fun(void) { char * array = new char[exact_required_size]; some_function(array); return array; }因为此类功能的用户必须
deletearray。
如果在使用有问题的函数之前无法知道确切的数组大小/长度(当无法预测函数将返回的字符串多长时间),则第二个选项甚至不总是可行的。
完美的方法是使用std::string,因为它具有可变长度,并且它的析构函数负责释放内存,但许多库函数不支持std::string(它们是否应该是另一个问题)。
好的,那有什么问题吗?好吧 - 我应该如何使用这些功能?使用固定大小的数组或使用new 并让我的函数的用户担心释放内存?或者也许实际上有我没有想到的顺利解决方案?
【问题讨论】:
标签: arrays function stdstring const-char