为什么在外部循环中 isstringstream 迭代器在从文件读取时只迭代一次,尽管该文件中还存在其他行?
Why in outer loop isstringstream iterator is iterating only once ,while reading from file , though there are other lines exist in that file?
内循环的执行次数与有关文件中的行数一样多。
但是外循环只执行一次,无论是否存在其他行 files.I 想要比较第一个文件的每一行(包含 m 行)与第二个文件的每一行(包含 n 行)的值。如何迭代循环 m X n 次?
ifstream gpsfixinput, geofenceinput;
gpsfixinput.open(GPSFIX_FILE, ios_base::in);
geofenceinput.open( GEOFENCE_FILE, ios_base::in);
string gline,lline ;
while(getline(gpsfixinput, lline))
{
istringstream lin(lline);
double lat,lon;
lin >> lat >> lon ;
while(getline(geofenceinput, gline))
{
istringstream gin(gline);
double glat, glon, rad;
string alert;
gin >> glat >> glon >> rad >>alert;
distance(lat,lon, glat, glon , rad , alert );
}
对于第一个文件中的每一行,您的外循环(可能)是 运行,但是因为您已经阅读了整个第二个文件,所以它没有任何副作用。
如果您想要 (lat, lon) 对和 (glat, glon, rad, alert) 四边形的叉积,您应该可以在单独的循环中将它们读取到某个容器中,然后循环遍历您的容器。
例如
struct gpsfix
{
double lat, lon;
}
struct geofence
{
double glat, glon, rad;
string alert;
}
std::vector<gpsfix> gpsfixes;
std::vector<geofence> geofences;
while(getline(gpsfixinput, lline))
{
istringstream lin(lline);
double lat, lon;
lin >> lat >> lon ;
gpsfixes.emplace_back(lat, lon);
}
while(getline(geofenceinput, gline))
{
istringstream gin(gline);
double glat, glon, rad;
string alert;
gin >> glat >> glon >> rad >> alert;
geofences.emplace_back(glat, glon, rad, alert);
}
for (gpsfix fix : gpsfixes)
{
for (geofence fence : geofences)
{
distance(fix.lat, fix.lon, fence.glat, fence.glon, fence.rad, fence.alert);
}
}
内循环的执行次数与有关文件中的行数一样多。 但是外循环只执行一次,无论是否存在其他行 files.I 想要比较第一个文件的每一行(包含 m 行)与第二个文件的每一行(包含 n 行)的值。如何迭代循环 m X n 次?
ifstream gpsfixinput, geofenceinput;
gpsfixinput.open(GPSFIX_FILE, ios_base::in);
geofenceinput.open( GEOFENCE_FILE, ios_base::in);
string gline,lline ;
while(getline(gpsfixinput, lline))
{
istringstream lin(lline);
double lat,lon;
lin >> lat >> lon ;
while(getline(geofenceinput, gline))
{
istringstream gin(gline);
double glat, glon, rad;
string alert;
gin >> glat >> glon >> rad >>alert;
distance(lat,lon, glat, glon , rad , alert );
}
对于第一个文件中的每一行,您的外循环(可能)是 运行,但是因为您已经阅读了整个第二个文件,所以它没有任何副作用。
如果您想要 (lat, lon) 对和 (glat, glon, rad, alert) 四边形的叉积,您应该可以在单独的循环中将它们读取到某个容器中,然后循环遍历您的容器。
例如
struct gpsfix
{
double lat, lon;
}
struct geofence
{
double glat, glon, rad;
string alert;
}
std::vector<gpsfix> gpsfixes;
std::vector<geofence> geofences;
while(getline(gpsfixinput, lline))
{
istringstream lin(lline);
double lat, lon;
lin >> lat >> lon ;
gpsfixes.emplace_back(lat, lon);
}
while(getline(geofenceinput, gline))
{
istringstream gin(gline);
double glat, glon, rad;
string alert;
gin >> glat >> glon >> rad >> alert;
geofences.emplace_back(glat, glon, rad, alert);
}
for (gpsfix fix : gpsfixes)
{
for (geofence fence : geofences)
{
distance(fix.lat, fix.lon, fence.glat, fence.glon, fence.rad, fence.alert);
}
}