我试图通过insert方法在C ++中的字符串中插入一个字符,以下是我的代码,但它似乎没有成功。我不知道为什么会发生这种情况的确切原因?
#include <bits/stdc++.h>
using namespace std;
string func1(int n)
{
string answer;
bitset<1000> bits(n);
bool b=false;
if(ceil((double)log2(n/1.0))>=2)
b=true;
for(int i=ceil((double)log2(n/1.0));i>=2;i--)
{
b=true;
if(bits.test(i)==true)
answer+="2("+func1(i)+")+";
}
//answer+=")";
if(bits.test(1)==true)
answer+="2";
if(bits.test(0)==true)
answer+="2(0)";
return answer;
}
int main()
{
string s1=func1(1315);
string answer;
cout << s1 << endl;
for(int i=0;i<s1.length()-4;i++)
{
if(s1.substr(i,4)=="2(0)" && s1.at(i-1)!='+')
s1.insert(i-1,1,'+');
}
cout << s1 << endl;
}
答案 0 :(得分:0)
我不知道你要完成什么,但你的代码有一些逻辑错误。
也许您打算s1.substr(i, 4)
代替s1.substr(i, i+4)
。 substr
的第二个参数是长度。
即使在执行此操作之后,您也可能会进入无限循环,因为每次插入时字符串的长度都会增加1并从同一索引中重新检查。
这在逻辑上应该比你的代码更正确:
for(int i=0;i<s1.length()-4;i++)
{
if(i>0 && s1.substr(i,4)=="2(0)" && s1.at(i-1)!='+')
s1.insert(i-1,1,'+');
i++;
}