问题:给定一个长度为N且从0到N-1索引的字符串S,将其偶数索引和奇数索引字符作为空格分隔的字符串打印在一行上,即如果String是Hacker输出应为Hce akr。 我写了这段代码......
#include <iostream>
using namespace std;
int main() {
int T;
cin>>T;
string str;
string evenStr;
string oddStr;
for(int i=1; i<=T; i++)
{
cin>>str;
for(int j=0;j<str.size();j++)
(j%2==0) ? (evenStr+=str[j]) : (oddStr+=str[j]);
cout<<evenStr<<" "<<oddStr<<endl;
}
return 0;
}
输入T = 2和两个字符串“Hacker”“Rank”...此代码输出“Hce akr” “HceRn akrak” 但是这段代码打印出正确的结果......为什么?
#include <iostream>
using namespace std;
int main() {
int T;
cin>>T;
for(int i=1; i<=T; i++)
{ string str;
string evenStr;
string oddStr;
cin>>str;
for(int j=0;j<str.size();j++)
(j%2==0) ? (evenStr+=str[j]) : (oddStr+=str[j]);
cout<<evenStr<<" "<<oddStr<<endl;
}
return 0;
}
输入T = 2和两个字符串“Hacker”“Rank”...正确输出:“Hce akr”“ Rn ak“
答案 0 :(得分:0)
每次都需要清除字符串,否则你将在旧字符串中重复工作。
//locally declared
for (...)
{
string evenstr;
//work
}
其他明智的
// out of loop declared.
for (...)
{
evenstr="";
//work
}