使用以下声明调用函数的最佳方法是什么
string Extract(const char* pattern,const char* input);
我用
string str=Extract("something","input text");
此用法存在问题
我应该使用以下
char pattern[]="something";
char input[]="input";
//or use pointers with new operator and copy then free?
两者都有效,但我喜欢第一部,但我想知道最佳实践。
答案 0 :(得分:6)
文字字符串(例如"something"
)可以很好地作为函数调用的const char*
参数。
答案 1 :(得分:1)
除非你明白有相同字符串的副本,或者改变那些字符串,否则我是第一种方式的粉丝(直接传递文字),这意味着更少关于代码的点,以找到实际参数,它也意味着传递参数的工作量减少。
看到它被标记为C ++,直接传递文字允许您轻松地将函数参数切换到std::string
。
答案 2 :(得分:1)
第一种方法,即字面上通过它们,通常是优选的。
有时您不希望将字符串硬编码到文本中。在某些方面,你可以说,有点像魔术数字,它们是神奇的单词/短语。因此,您更喜欢使用常量标识符来存储值并将其传递给它们。
这种情况经常发生在:
1
。一个单词具有特殊含义,并且在代码中多次传递以具有该含义。或
2
。这个词可能在某种程度上是神秘的,而常数标识符可能更具描述性