写入 C++ 应用程序时, 我通常仅限于 C++ 特定语言功能。 在大多数情况下, 这意味着尽可能使用 STL 而不是 CRT 。
对我来说,STL比CRT更流畅、更能维持。
std::string str( "Hello" );
if( str == "Hello" ) { ... }
C-Run时间等值为:
char const* str = "Hello";
if( strcmp( str, "Hello" ) == 0 ) { ... }
个人来说,我发现前一个例子更容易看到。我更清楚地知道到底发生了什么。 当我写出第一个密码时,我的第一件事就是总是以最自然的方式写出代码。
我的团队对前一个例子的担忧是动态分配。 如果字符串是静态的OR已经分配到其他地方,他们认为造成分裂的潜在可能性或在这里的浪费性分配是没有道理的。 我反对这个论点的理由是首先以最自然的方式写出代码,然后在得到代码造成问题的证明后再回去修改代码。
另一个我不喜欢后一个例子的原因是它使用 C 图书馆。 通常情况下,我不惜一切代价避免它,只是因为它不是 C++,不易读,更易出错,而且更具有安全风险。
所以,我的问题是,我是否正确避免C运行时间?我是否真的关心这步的编码中的额外分配?我很难判断在这种情形下我是否正确。