我有一个像。的文件:
4,3
3,2
5,1
6,5
每一行都是一个坐标。对于第一行,x1 = 4,y1 = 3.然后对于第二行,x2 = 3,y2 = 2,依此类推。此方法的目的是获取文件中的4个坐标并将它们存储在变量或数组中。我认为最好的方法是为x创建一个数组,为y创建另一个数组,因此我们将coordX[]
和coordY[]
。由于我必须读取的文件将始终只包含4个坐标,因此两个数组的大小均为[3]。
我现在使用的代码就是:
void readFile(){
int x1, y1;
int coordX[3], coordY[3];
while (infile >> x1 >> y1){
//How to insert the coordinates into coordX[] and coordY[]?
}
}
正如您所看到的,我不知道如何使方法将每个坐标的值插入到数组中,有没有办法使用数组?或者我应该创建int
变量x1,y1,x2,y2等?提前致谢!
答案 0 :(得分:2)
如果坐标数固定为4,您可以通过重复读取四次来展开循环,如下所示:
void readFile(){
int coordX[4], coordY[4];
infile >> coordX[0] >> coordY[0];
infile >> coordX[1] >> coordY[1];
infile >> coordX[2] >> coordY[2];
infile >> coordX[3] >> coordY[3];
...
}
你也可以用循环来做到这一点:
void readFile(){
int coordX[4], coordY[4];
for (int i = 0 ; i != 4 ; i++) {
infile >> coordX[i] >> coordY[i];
}
...
}
请注意,由于您正在阅读四个项目,因此必须使用四个而非三个元素声明coordX
和coordY
。一般规则是,当您声明一个N
项数组时,有效索引从零(包括)到N-1
,包括在内。
另请注意,coordX
和coordY
必须在同一函数中使用,或者复制到容器或动态分配的数组,以便从readFile
函数返回。
最后,如果要读取的项目数不,则应更改代码以使用vector
或list
代替数组来保留可变数量的结果。
我只是想知道,如何将逗号作为标记分隔符插入?
您可以添加类似于this answer中所述内容的peek-and-ignore代码:
void readFile(){
int coordX[4], coordY[4];
for (int i = 0 ; i != 4 ; i++) {
infile >> coordX[i];
if (infile.peek() == ',') {
// If the next character is a comma, skip it
infile.ignore();
}
infile >> coordY[i];
}
...
}
答案 1 :(得分:0)
使用最少的原始代码mods
void readFile(){
int x, y;
int i = 0;
int coordX[4], coordY[4];
while (infile >> x >> y){
//How to insert the coordinates into coordX[] and coordY[]?
coordx[i] = x;
coordy[i] = y;
i++;
}
}
当然这段代码完全错了。如果文件包含5行,它将中断,如果它包含3行,你不会知道最后一行丢失。你应该使用std :: vector,...