我需要将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];
答案 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]);
}