Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 逐行读取文件并存储值_C++_File - Fatal编程技术网

C++ 逐行读取文件并存储值

C++ 逐行读取文件并存储值,c++,file,C++,File,我有一个file.txt文件,如: 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;

我有一个file.txt文件,如:

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等等?提前谢谢

与原始代码的最小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,…

如果坐标数固定为四,则可以通过重复读取四次来展开循环,如下所示:

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
函数返回

最后,如果要读取的项目数不固定,则应将代码更改为使用
向量
列表
而不是数组来保存可变数量的结果

我只是想知道,如何插入逗号作为标记分隔符

您可以添加一个查看和忽略代码,类似于中所述:


您有一个逗号分隔的值文件。请搜索“StAccess C++ + CSV”,谢谢您的解答!我只是想知道,如何插入逗号作为标记分隔符?因为只有当文件中的坐标没有用逗号分隔时,代码才起作用,比如说:
4 2
,但是如果值之间有逗号,代码就不起作用:
4,3
4,2
有什么方法可以做到这一点吗?谢谢!:)非常感谢你!!!你的解决方案比那些关于阅读CSV的帖子简单多了,谢谢!!!!!!!!!!!!!
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];
   }
   ...
}