在我的程序中,我希望函数replacef(char m)将字母A / a替换为数字(初始化为char)。但是,当我在for循环中调用该函数并且如果我编写例如“Alabama”(没有“.mark”)时,程序将返回不变的字符串。如何传递角色以使此功能正常工作?
#include <iostream>
#include <string>
using namespace std;
string n;
void replacef(char m)
{
switch (m)
{
case 'A':
case 'a':
m='1';
}
}
int main()
{
cin>>n;
for(int i=0; i<n.length(); i++)
{
replacef(n[i]);//Replace the current char in the string
}
cout<<n<<endl;
}
答案 0 :(得分:2)
您需要通过引用传递参数。将void replacef(char m)
替换为void replacef(char& m)
。
答案 1 :(得分:1)
您的替换功能必须通过引用接收char。
void replacef( char& c){ ...
我认为您还应该看看std :: replace函数,它可以满足您的需求。 http://en.cppreference.com/w/cpp/algorithm/replace
M2c构成
答案 2 :(得分:1)
您应该使用引用或指针来执行此操作。
以下是执行此操作的代码: -
#include <iostream>
#include <string>
using namespace std;
string n;
void replacef(char &m)
{
switch (m)
{
case 'A':
case 'a':
m='n';//you can choose any character to replace in place of 'm'
}
}
int main()
{
cin>>n;
for(int i=0; i<n.length(); i++)
{
replacef(n[i]);//Replace the current char in the string
}
cout<<n<<endl;
}
如果您还有任何查询,请发表评论