是否可以重载默认参数的方法?

例如,如果我有一个 split() 方法来分割字符串,但该字符串有两个分隔符,即“_”和“delimit”。我可以有两种方法吗:

split(const char *str, char delim = ' ')

split(const char *str, const char* delim = "delimit");

或者,有更好的方法来实现这一目标吗?不知何故,我的大脑现在不工作,无法想到任何其他解决方案。

编辑:问题详细:

我有一个带有两个分隔符的字符串,例如,nativeProbableCause_Complete|Alarm|Text。我需要将nativeProbableCause和Complete|Alarm|Text分开,然后进一步,我需要将Complete|Alarm|Text分成单独的单词,并在稍后的某个时候用空格作为分隔符将它们重新连接起来(我已经为此编写了一个实用程序,并且不是'没什么大不了的)。只是分隔字符串的分隔困扰着我。

有帮助吗?

解决方案

如何实现为两种不同的方法,例如

  • split_with_default_delimiter_space
  • split_with_default_delimiter_delimit

就我个人而言,我更喜欢使用这样的东西(更具可读性..意图传达)超过你提到的超载类型......即使编译器以某种方式可能做到这一点。

其他提示

没有,你不能 - 如果你想想看,一个默认手段的概念“使用这个,除非我说,否则”。如果编译器具有用于默认2个选项,其中的一个将它选择?

为什么不只是调用分裂()两次,并明确通过定界符第二时间?将分隔符总是单个字符?

你加入他们之前执行对第二组词任何其他处理?如果没有,那么第二个任务你真正想要做的是替换字符串。这是最容易使用的std :: string ::进行查找和的std :: string ::更换。如果必须使用C字符串,你可以使用的strstr /,和strchr / strpbrk,strcpy的和strcat的,或只使用的strstr /,和strchr / strpbrk和地方加入他们的行列。

您可以使用一个版本分裂的(如果你想split(const char*,vector<string>) split(const char*, const char**))或者只是使用的升压标记生成器

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top