Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C+中向字符串插入字符时出现的奇怪行为+; 我试图用插入方法在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; } #包括 使用名称空间std; 字符串func1(int n) { 字符串回答; 位集位(n); 布尔b=假; 如果(ceil((双)log2(n/1.0))>=2) b=正确; 对于(inti=ceil((double)log2(n/1.0));i>=2;i--) { b=正确; 如果(位测试(i)=真) 回答+=“2”(“+func1(i)+”)+”; } //回答+=”; 如果(位测试(1)=真) 回答+=“2”; 如果(位测试(0)=真) 回答+=“2(0)”; 返回答案; } int main() { 字符串s1=func1(1315); 字符串回答; cout_C++_String_Insert - Fatal编程技术网 =2) b=正确; 对于(inti=ceil((double)log2(n/1.0));i>=2;i--) { b=正确; 如果(位测试(i)=真) 回答+=“2”(“+func1(i)+”)+”; } //回答+=”; 如果(位测试(1)=真) 回答+=“2”; 如果(位测试(0)=真) 回答+=“2(0)”; 返回答案; } int main() { 字符串s1=func1(1315); 字符串回答; cout,c++,string,insert,C++,String,Insert" /> =2) b=正确; 对于(inti=ceil((double)log2(n/1.0));i>=2;i--) { b=正确; 如果(位测试(i)=真) 回答+=“2”(“+func1(i)+”)+”; } //回答+=”; 如果(位测试(1)=真) 回答+=“2”; 如果(位测试(0)=真) 回答+=“2(0)”; 返回答案; } int main() { 字符串s1=func1(1315); 字符串回答; cout,c++,string,insert,C++,String,Insert" />

在C+中向字符串插入字符时出现的奇怪行为+; 我试图用插入方法在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; } #包括 使用名称空间std; 字符串func1(int n) { 字符串回答; 位集位(n); 布尔b=假; 如果(ceil((双)log2(n/1.0))>=2) b=正确; 对于(inti=ceil((double)log2(n/1.0));i>=2;i--) { b=正确; 如果(位测试(i)=真) 回答+=“2”(“+func1(i)+”)+”; } //回答+=”; 如果(位测试(1)=真) 回答+=“2”; 如果(位测试(0)=真) 回答+=“2(0)”; 返回答案; } int main() { 字符串s1=func1(1315); 字符串回答; cout

在C+中向字符串插入字符时出现的奇怪行为+; 我试图用插入方法在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; } #包括 使用名称空间std; 字符串func1(int n) { 字符串回答; 位集位(n); 布尔b=假; 如果(ceil((双)log2(n/1.0))>=2) b=正确; 对于(inti=ceil((double)log2(n/1.0));i>=2;i--) { b=正确; 如果(位测试(i)=真) 回答+=“2”(“+func1(i)+”)+”; } //回答+=”; 如果(位测试(1)=真) 回答+=“2”; 如果(位测试(0)=真) 回答+=“2(0)”; 返回答案; } int main() { 字符串s1=func1(1315); 字符串回答; cout,c++,string,insert,C++,String,Insert,我不知道您想要完成什么,但是您的代码有一些逻辑错误 也许您打算执行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(

我不知道您想要完成什么,但是您的代码有一些逻辑错误

也许您打算执行
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++;
}
for(inti=0;i0&&s1.substr(i,4)=“2(0)”&&s1.at(i-1)!=“+”)
s1.插入(i-1,1,“+”);
i++;
}

第一次循环时
i-1
为-1,因此
at()
将引发异常。仅插入字符就如同调用
insert
一样简单,但您所做的远远不止于此。你到底想用这些代码实现什么?但似乎没有成功——如果第一个注释是正确的,并且你得到了一个
超出范围的
异常,为什么你不在问题中提到这一点?你的代码。因此,对于所有这些代码和生成的输出,您需要准确地说明您期望作为输出的内容,更好的是,所有这些代码的高级目标是什么?如果有一个简单得多的解决方案来解决你想要完成的事情,我不会感到惊讶。