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