用字符串替换字符串中的感叹号

时间:2016-07-11 04:36:04

标签: c++ string replace

我要求用字符串中的点替换所有的惊叹号。我提出了一个函数,但我收到错误,因为它没有改变最后一个感叹号。这只是最后一次感叹。

输入是:

我们将继续我们在太空中的探索。将有更多的班车航班和更多的班车服务员,是的,更多的志愿者,更多的平民,更多的太空教师。没有什么在这里结束;我们的希望和旅程继续!

我的功能是:

string ReplaceExclamation(string text)
{
string newText = text;
int i, len = text.size();

for(i=0; i<len; i++)
{

if(text[i] == '!')
newText[i] = '.';
}
return newText;
}

是否有人知道如何核心它,因为它只是最后的感叹号。 感谢

2 个答案:

答案 0 :(得分:3)

您可以使用std::replace算法功能将感叹号替换为点:

std::replace(s1.begin(), s1.end(), '!', '.');

确保包含<algorithm>标题。

答案 1 :(得分:0)

字符串库的长度函数不包括字符串末尾的'\ 0'字符。因此,您可以在for循环中尝试len + 1作为终止条件。

string ReplaceExclamation(string text)
{ 
string newText = text;
int i, len = text.size();

for(i=0; i<len+1; i++)
{

if(text[i] == '!')
newText[i] = '.';
}
return newText;
}

希望它有所帮助!