0

我需要将一个 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];
4

2 回答 2

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

于 2013-07-25T11:42:33.847 回答
-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]);
}
于 2013-07-25T11:46:50.970 回答