对于我正在编写的集群程序,我需要从文件中读取信息。我正在尝试从具有特定格式的文件中读取坐标:
1.90, 2
0.0, 4.01
6, 1.00
不幸的是,由于这个文件中存在换行符和点,我无法做到这一点。以下两个函数都不能工作,即使文件流是"好的":
std::vector<Point*> point_list_from_file(std::ifstream& ifstr) {
double x, y;
char comma;
std::vector<Point*> point_list;
while(ifstr >> x >> comma >> y) {
point_list.push_back(new Point(x,y));
}
return point_list;
}
std::vector<Point*> point_list_from_file(std::ifstream& ifstr) {
double x, y;
char comma;
std::vector<Point*> point_list;
while(ifstr >> x >> comma >> y >> comma) {
point_list.push_back(new Point(x,y));
}
return point_list;
}
我不知道如何解决这个问题,非常感谢任何帮助。
试试这个-
std::vector<Point*> point_list_from_file(std::ifstream& ifstr) {
char sLineChar [256];
std::vector<Point*> point_list;
ifstr.getline (sLineChar, 256);
while (ifstr.good()) {
std::string sLineStr (sLineChar);
if (sLineStr.length () == 0){
ifstr.getline (sLineChar, 256);
continue;
}
int nSep = sLineStr.Find (',');
double x = atof (sLineStr.Mid(0,nSep).Trim ());
double y = atof (sLineStr.Mid(nSep+1).Trim ());
point_list.push_back(new Point(x,y));
ifstr.getline (sLineChar, 256);
}
return point_list;
}