设为首页 加入收藏

TOP

C++流操作之fstream(三)
2013-09-26 18:39:05 来源: 作者: 【 】 浏览:89
Tags:操作 fstream

 

  while (getline(in, line)) {

  if (line.find("facet normal") != string::npos) {

  facet f;

  //read normal

  stringstream ns(line);

  ns >> word; //eat "facet"

  ns >> word; //eat "normal"

  ns >> f.normal[0] >> f.normal >> f.normal ;

  //read vertices

  getline(in, line); //"outer loop"

  for (int i = 0; i < 3; i++) {

  getline(in, line);

  stringstream vs(line);

  vs >> word; //eat "vertex"

  vs >> f.vertex[i][0] >> f.vertex[i] >> f.vertex[i] ;

  }

  getline(in, line); //"endloop"

  getline(in, line); //"endfacet"

  solid.push_back(f);

  }

  }

  in.close();

  //output

  int cnt = solid.size();

  printf("read %d facet\n", cnt);

  for (int i = 0; i < cnt; i++) {

  facet& f = solid[i];

  printf("\nfacet %d:\nnormal = (%f, %f, %f)\n", \

  i+1, f.normal[0], f.normal , f.normal );

  for (int j = 0; j < 3; j++) {

  printf("vertex[%d] = (%f, %f, %f)\n", \

  j+1, f.vertex[j][0], f.vertex[j] , f.vertex[j] );

  }

  }

  return 0;

  }

  测试文件为:

  cube_corner.stl

  solid cube_corner

  facet normal 0.0 -1.0 0.0

  outer loop

  vertex 0.0 0.0 0.0

  vertex 1.0 0.0 0.0

  vertex 0.0 0.0 1.0

  endloop

  endfacet

  facet normal 0.0 0.0 -1.0

  outer loop

  vertex 0.0 0.0 0.0

  vertex 0.0 1.0 0.0

  vertex 1.0 0.0 0.0

  endloop

  endfacet

  facet normal 0.0 0.0 -1.0

  outer loop

  vertex 0.0 0.0 0.0

  vertex 0.0 0.0 1.0

  vertex 0.0 1.0 0.0

  endloop

  endfacet

  facet normal 0.577 0.577 0.577

  outer loop

  vertex 1.0 0.0 0.0

  vertex 0.0 1.0 0.0

  vertex 0.0 0.0 1.0

  endloop

  endfacet

  endsolid

  输入结果为:

  read 4 facet

  facet 1:

  normal = (0.000000, -1.000000, 0.000000)

  vertex = (0.000000, 0.000000, 0.000000)

  vertex = (1.000000, 0.000000, 0.000000)

  vertex = (0.000000, 0.000000, 1.000000)

  facet 2:

  normal = (0.000000, 0.000000, -1.000000)

  vertex = (0.000000, 0.000000, 0.000000)

  vertex = (0.000000, 1.000000, 0.000000)

  vertex = (1.000000, 0.000000, 0.000000)

  facet 3:

  normal = (0.000000, 0.000000, -1.000000)

  vertex = (0.000000, 0.000000, 0.000000)

  vertex = (0.000000, 0.000000, 1.000000)

  vertex = (0.000000, 1.000000, 0.000000)

  facet 4:

  normal = (0.577000, 0.577000, 0.577000)

  vertex = (1.000000, 0.000000, 0.000000)

  vertex = (0.000000, 1.000000, 0.000000)

  vertex = (0.000000, 0.000000, 1.000000)

  Press any key to continue . . .

      

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇用VC++编制FTP客户端程序 下一篇c++中的messagebox()用法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: