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