我是编程的初学者,所以如果我以错误的方式解决问题,请放轻松。我这样做是作为一项任务。我的目的是从用户获取一个字符串并用另一个符号替换所有字符。下面的代码应该找到所有的As然后用* s替换。我的代码显示出完全出乎意料的结果另外_deciphered.length()的目的是什么。
例如: “我是一个男孩”应该变成“我* m * b * d boy”
然后我应该为所有大写和小写字母和数字实现它,并用不同的符号替换,反之亦然,以制作一个小的Encode-Decode程序
#include <iostream>
#include <string>
using namespace std;
string cipher (string);
void main ()
{
string ciphered, deciphered;
ciphered="String Empty";
deciphered="String Empty";
cout<<"Enter a string to \"Encode\" it : ";
cin>>deciphered;
ciphered=cipher (deciphered);
cout<<endl<<endl;
cout<<deciphered;
}
string cipher (string _deciphered)
{
string _ciphered=(_deciphered.replace(_deciphered.find("A"), _deciphered.length(), "*"));
return _ciphered;
}
答案 0 :(得分:4)
由于您似乎已经在使用标准库,
#include <algorithm> // for std::replace
std::replace(_deciphered.begin(), _deciphered.end(), 'A', '*');
如果您需要手动执行此操作,请记住std::string
看起来像char
的容器,因此您可以迭代其内容,检查每个元素是否为{{1如果是,请将其设置为'A'
。
工作示例:
'*'
输出:
FooBarro
f **巴尔*
答案 1 :(得分:1)
您可以使用std::replace
std::replace(deciphered.begin(), deciphered.end(), 'A', '*');
此外,如果您想要替换符合特定条件的多个值,则可以使用std::replace_if
。
std::replace_if(deciphered.begin(), deciphered.end(), myPredicate, '*');
如果字符与要替换的条件匹配,则myPredicate
返回true
。例如,如果您要同时替换a
和A
,myPredicate
应返回true
和a
的{{1}}以及其他A
字符。
答案 2 :(得分:0)
我个人会使用正则表达式替换来用*
替换“A或an”