c++辅助函数

C++ helper function

本文关键字:函数 c++      更新时间:2023-10-16

我有很多这样的代码:

otherString1 = myString1.replace("a", "b").replace("c", "d").replace("e", "f");
otherString2 = myString2.replace("a", "b").replace("c", "d").replace("e", "f");
otherString3 = myString3.replace("a", "b").replace("c", "d").replace("e", "f");

我不想一遍又一遍地重复这些replace方法。重构这类代码的正确方法是什么?I'm new to c++…

I thought I can do:

#define REPLACE .replace("a", "b").replace("c", "d").replace("e", "f")
otherString1 = myString1#REPLACE;

但是这不起作用

我显然不能猴子补丁字符串类添加myReplace()

该怎么办?我应该把替换代码放在头文件还是源文件中?那static, inline, const呢?我是应该创建一个完整的helper类和一个helper方法,还是应该在某个地方创建一个函数?比如:

[helper.hpp]
static inline const myReplace(const StringClass s);
[helper.cpp]
static inline const myReplace(const StringClass s) {
    return s.replace("a", "b").replace("c", "d").replace("e", "f");
}
[somefile.cpp]
include "helper.hpp"
otherString3 = myReplace(myString3);

我看你想太多了。只需创建一个函数,它接受一个字符串(通过const引用)并返回修改后的字符串。在头文件中声明,并在相应的.cpp文件中定义。

工作。

[helper.hpp]
std::string myReplace(const std::string& s);
[helper.cpp]
std::string myReplace(const std::string& s) {
   ...
}
[somefile.cpp]
#include "helper.hpp"
otherString3 = myReplace(myString3);

我只是想指出,你的宏将工作,你只是使用它不正确。然而,这不是解决这个问题的正确方法,只是想指出来。下面是正确的用法:

#define REPLACE .replace("a", "b").replace("c", "d").replace("e", "f")
otherString1 = myString1 REPLACE;

或者更好(如果使用宏可以更好的话):

#define REPLACE(str) str.replace("a", "b").replace("c", "d").replace("e", "f")
otherString1 = REPLACE(myString1);

请记住,不这样做,但这就是宏的使用方式。