c ++使用const char *参数类型调用函数的最佳方法

时间:2012-02-19 21:43:28

标签: c++ function pointers char parameter-passing

使用以下声明调用函数的最佳方法是什么

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?

两者都有效,但我喜欢第一部,但我想知道最佳实践。

3 个答案:

答案 0 :(得分:6)

文字字符串(例如"something")可以很好地作为函数调用的const char*参数。

答案 1 :(得分:1)

除非你明白有相同字符串的副本,或者改变那些字符串,否则我是第一种方式的粉丝(直接传递文字),这意味着更少关于代码的点,以找到实际参数,它也意味着传递参数的工作量减少。

看到它被标记为C ++,直接传递文字允许您轻松地将函数参数切换到std::string

答案 2 :(得分:1)

第一种方法,即字面上通过它们,通常是优选的。

有时您不希望将字符串硬编码到文本中。在某些方面,你可以说,有点像魔术数字,它们是神奇的单词/短语。因此,您更喜欢使用常量标识符来存储值并将其传递给它们。

这种情况经常发生在:

  • 1。一个单词具有特殊含义,并且在代码中多次传递以具有该含义。

  • 2。这个词可能在某种程度上是神秘的,而常数标识符可能更具描述性