字符串删除和更新



试图用单个循环删除和替换字符串。例如:

输入:"the- year">

与我的代码

std::string convert(std::string text) {
std::string val;
auto index{ 0 };
for (auto x : text)
{ 
if (x != '-')
{
val.push_back(x);
index++;
}
else
{
val.push_back(std::toupper(text[index+1]));
index++;
}
}
return val;
}

call:convert("the-new-year");

预期产出:"theNewYear">

获取结果:"theNnewYyear"//错误的额外字符仍然存在

有使用STL算法的建议吗?

我建议你分两步来做:

首先将破折号后的第一个字母大写。使用普通迭代器或索引for循环:

std::string val = text;
for (std::size_t i = 0; i < val.length(); ++i)
{
if (i > 0 && val[i - 1] == '-')
{
val[i] = std::toupper(val[i]);
}
}

然后使用擦除习惯用法使用std::remove和字符串erase函数来删除破折号:

val.erase(std::remove(begin(val), end(val), '-'), end(val));

相关内容

  • 没有找到相关文章