我希望我的问题标题正确。
我有一个非常大/旧的数据库,其中包含许多非空终止字符数组和一些 std::string 类型。我正在创建一个将使用该数据库的工具,并且我想确保它对于非空终止字符数组的安全性。理想情况下,我希望同时支持这两种类型,以便开发人员轻松使用该工具。
void AddCell( const std::string & _cell_str );
void AddCell( const char * _cell_data, size_t _array_size );
但是,有一个特定的场景可能会出现问题:如果新开发人员不知道 char 数组是非空终止的并且出于懒惰决定使用 std::string 的隐式转换,因为他不必输入数组大小,那么 std::string 可能会显示一些不需要的字符。
我该如何处理这个问题?我应该强迫某人指定 std::string 的长度吗?我应该只删除 std::string 重载函数并让每个人都从他们的 std::string 中使用 c_str() 吗?理想情况下,我只使用显式关键字,但它仅适用于构造函数。我对避免使用 std::string 犹豫不决。