当使用一些处理字符数组(而不是'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并让我的函数的用户担心释放内存?或者也许实际上有一个我没有想到的顺利解决方案?