在C++中替换字符串中所有出现的字符

3

我有一个用C++编写的程序,在这个程序中,所有输入都是下划线(“_”),而不是空格。我想把所有下划线替换成空格(“ ”)。我尝试使用std::replace,但是一直出现错误,我不确定哪里出错了。

int main()
{   
    string j = "This_is_a_test";

    j = std::replace( j.begin(), j.end(), '_', ' ');

    // I'm trying to get: This is a test from 'j',  
}

当我尝试编译时,出现了以下错误:

请求将 void 转换为非标量类型 std::basic_string, std::allocator >


1
也许可以阅读一些 std::replace 的文档? - juanchopanza
加一:如果你的常用语言是Java,这个错误可以被原谅。 - Bathsheba
@Bathsheba 什么?Java的人不知道查找文档吗?有趣... - juanchopanza
正则表达式的人 肯定 不会。 - Bathsheba
@MelvinRufetu 请查看上面链接的重复问题。那里有解决您问题的方案。 - juanchopanza
3个回答

4

std::replace作用于迭代器,因此它直接修改了字符串,没有必要返回值。使用

std::replace(j.begin(), j.end(), '_', ' ');

替代方案。


1

std::replace 返回 void

你不能将 void 赋值给 std::string


0

你只需要使用:

 std::replace( j.begin(), j.end(), '_', ' ');
 cout<<j;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接