首页 > 解决方案 > 多个输入的代码失败

问题描述

这是我在其他网站上练习的 C++ 问题。代码如下。我的代码因多个输入而失败。输出只是

clee olg  

代替

clee olg
sho col

问题陈述 :

S给定一个长度N为从0到索引的字符串 ,将N-1其偶数索引和奇数索引字符作为空格分隔的字符串打印在一行上。

INPUT - 第一行包含一个整数,t(测试用例的数量)。后续行的每一i行都包含一个字符串,S

OUTPUT- 对于每个字符串S(其中0<= j<=N-1),打印S的偶数索引字符,后跟一个空格,然后是S的奇数索引字符。

例如-

2
college
school

输出-

clee olg
sho col

代码 :

int main() 
{
    int t;
    cin>>t;
    string str;
    vector<string>s_even;
    vector<string>s_odd;
    for(int i=0;i<t;i++)
    {
        getline(cin,str);

        for(int j=0;j<str.size();j++)
        {        
            if(j%2==0)
                 { 
                   string  a;
                   a=str[j];
                   s_even.push_back(a);

                 }
             else
                 { 
                   string b;
                   b= str[j];
                   s_odd.push_back(b);
                  }
           }

copy(s_even.begin(),s_even.end(),ostream_iterator<string>(cout));

cout<<" ";

copy(s_odd.begin(),s_odd.end(),ostream_iterator<string>(cout));

 str.clear();
 s_odd.clear();
 s_even.clear();
 }
 return 0;

}       

标签: c++c++11

解决方案


调试时,打印出中间结果可能会有所帮助。这可以帮助您查明故障的根源。例如,如果您在str之后打印出来getline(cin, str),您会注意到您的第一次迭代给您一个空字符串。

至于原因和解决方案,请查看@Mat此处的链接


推荐阅读