c ++ лучший способ вызвать функцию с типом параметра const char * - PullRequest
0 голосов
/ 20 февраля 2012

как лучше всего вызвать функцию со следующим объявлением

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 ]

6 голосов
/ 20 февраля 2012

Литеральная строка (например, "something") прекрасно работает как const char* аргумент для вызова функции.

1 голос
/ 20 февраля 2012

Первый способ, т. Е. Передача их буквально, обычно предпочтительнее.

Есть случаи, когда вы не хотите, чтобы ваши строки были жестко запрограммированы в тексте. В некотором смысле вы можете сказать, что, как магические числа, они являются волшебными словами / фразами. Поэтому вы предпочитаете использовать постоянный идентификатор для хранения значений и передачи их.

Это часто случается, когда:

  • 1. слово имеет особое значение и много раз передается в коде, чтобы иметь это значение.

или

  • 2. слово может быть каким-то загадочным, а постоянный идентификатор может быть более наглядным
1 голос
/ 20 февраля 2012

Если вы явно не хотите иметь дубликаты одних и тех же строк или изменять эти строки, я фанат первого способа (прямой передачи литералов), это означает, что нужно меньше разбираться в коде, чтобы найти параметры на самом деле,также означает меньше работы при передаче параметров.

Поскольку это помечено для C ++, передача литералов напрямую позволяет легко переключать параметры функции на std::string без особых усилий.

...