【发布时间】:2014-05-13 03:43:53
【问题描述】:
我编写了以下函数来替换 char 中的子字符串。这种方式涉及转换为 std::string 然后转换回 const char。这是最有效的方法还是我可以在没有这种转换甚至更好的方法的情况下做到这一点?!
const char* replaceInString(const char* find, const char* str, const char* replace)
{
std::string const text(str);
std::regex const reg(find);
std::string const newStr = std::regex_replace(text, reg, replace);
//Convert back to char
char *newChar = new char[newStr.size() + 1];
std::copy(newStr.begin(), newStr.end(), newChar);
newChar[newStr.size()] = '\0'; // terminating 0
return newChar;
}
const char* find = "hello";
const char* replace = "goodbye";
const char* oldStr = "hello james";
const char* newStr = m->replaceInString(find, oldStr, replace);
【问题讨论】:
-
使用
const char *有什么特别的原因吗? -
明显的替代方案:始终使用
std::string。