如何根据位置(偶数或奇数)将完整=数字分成两组

时间:2013-07-25 11:38:54

标签: c++ arrays string

我需要将txt文件拆分为2个数组 txt文件包含完整的数字。我可以不用字符串吗? 例如,输入

4(how many line)
2 1
3 7
8 0
3 7

我希望数组1包含(一行中的第一个数字)

{2 
3 
8 
3}

数组2包含(一行中的第二个数字)

{1 
 7
 0 
 7}

我怎么能这样做?只是好奇......这是一个不起作用的代码..

ifstream ifs("sth.txt");
int g;
ifs>>g;
int girl[g];
int boy[g];
for(int i=0;i<2*g,i++;){
if (i%2==0)ifs>>gil[g];
if (i%2==1)ifs>>boy[g];}
cout<<boy[1];

2 个答案:

答案 0 :(得分:2)

ifstream ifs("sth.txt");
int g;
ifs>>g;
int girl[g];
int boy[g];
for(int i=0;i<g,i++;){
    ifs>>girl[i];
    ifs>>boy[i];
}
cout<<boy[0];

您正在阅读girl[g]boy[g]而不是0..(g-1)

我也改变了阅读:两个在循环的一次迭代中注入了1个整数。

最后我改变了计数(索引0)而不是boy的第二个元素。

答案 1 :(得分:-1)

ifstream ifs("sth.txt"); 
int g;
ifs>>g;
int girl[g];
int boy[g];
for(int i=0;i<g,i++;){
    ifs>>gil[i];
    ifs>>boy[i];
}
cout<<boy[0];

int a =0; b = 0;
for(int i=0;i<g;i++){
     if(i%2) ifs>>boy[b++];
     else ifs>>girl[a++];
}

for(int i=1;i<=g;i+=2){
    ifs>>boy[(i-1)/2];
    if(i+1<=g)
        ifs>>girl[(i-1)/2];
}

std::string str((std::istreambuf_iterator<char>(ifs)), std::istreambuf_iterator<char>());
for(int i=0;i<g;i++){
  fscanf(str,"%d %d",boy[i],girl[i]);
}