enter image description here我有以下代码应该用单词“pi”替换pi(3.14)的实例。例如,“x3.14 3.14 3.14xx”应该变成“xpi pi pixx”。但是,我的代码没有这样做;为什么它不起作用,我将如何解决它?
#include<iostream>
#include<cstring> //dsfsdf
#include<string>
#include<cstdio>//sdfdsf
using namespace std;
void replacepi(char *arr,int i)
{
//base
if(arr[i]=='\0')
{
cout<<arr<<endl;
return;
}
//recc
if(arr[i]=='3' && arr[i+1]=='.' && arr[i+2]=='1' && arr[i+3]=='4')
{
arr[i]='p';
arr[i+1]='i';
for(int j=i+4;arr[j]!='\0';j++)
arr[j-2]=arr[j];
arr[strlen(arr)-2]='\0';
}
replacepi(arr,i+1);
}
int main() {
long int n;
cin>>n;
for(int i=0;i<n;i++)
{
char arr[1000];
cin.getline(arr,sizeof(arr));
replacepi(arr,0);
}
return 0;
}
答案 0 :(得分:1)
看起来像regex_replace
的工作。鉴于您已将输入读入arr
,您可以将替换转储到控制台,如下所示:
regex_replace(ostream_iterator<char>(cout), cbegin(arr), cend(arr), regex("3\.14"), "pi")
自然arr
应该是string
,而不是char[]
,因为任何大小char[]
输入可能更大,{{1}将永远有效。