从文件中读取双精度对象对(c++)



对于我正在编写的集群程序,我需要从文件中读取信息。我正在尝试从具有特定格式的文件中读取坐标:

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;

}

相关内容

  • 没有找到相关文章

最新更新