【发布时间】:2024-01-08 09:20:01
【问题描述】:
起初这似乎很容易做到,但我错了。 我想用 int(值)“替换”字符串中的 char(变量)。但是怎么做呢?
我尝试了 replace(),因为我正在处理一个字符串并且它有效,但如果我希望将变量的值再次更改为另一个,它将不起作用 值,因为这样就找不到原始变量。在过去的两天里,我一直在为此苦苦挣扎。任何有关如何执行此操作的帮助将不胜感激。
changeVar(string startingExpr, char var, int val)
{
for(int i = 0; i < startingExpr.length(); i++)
{
if(startingExpr[i] == var)
{
cout << "I found x! Now to replace it!";
startingExpr[i] = val; //'Replace' x with 5, but x but how?
}
}
}
非常感谢您对此提供的帮助。
J
【问题讨论】:
-
如果
val始终是一位数字,那么startingExpr[i] = val + '0';应该可以解决问题。否则,您需要通过将val格式化为十进制,在给定位置插入其字符串表示形式。谷歌std::string的方法文档,如find、remove、erase和insert。 -
您正在重新发明
std::replace,但有了输出,您可以使用std::replace_if来完成。 -
与其认为这是修改原始字符串,不如将其视为原始字符串的一部分(如此处 x 之前和之后的部分)。然后将您想要的旧部分与新部分(在本例中为 int 值作为字符串)组合以获得新字符串。
-
当字符出现在你不想替换的句子的单词中时,我希望你意识到问题......就像在
"Here's the value for x: x!"中如果字符串是某种格式应用程序中的字符串,请考虑一些特殊的语法,例如"Here's the value for x: $(x)!"来支持句子中的任意单词。 -
关于您最初的问题,您为什么会遇到所描述的问题?据我所知,您传递字符串按值,这意味着函数更改它的副本。 (我看不出你用它做什么,因为你没有在你的代码中显示它。)总结:请告诉我们更多/添加更多代码。