原创 一个点类

2008-8-2 10:08 1596 1 1 分类: 工程师职场

前段用stl做了一个处理ansys网格的程序,主要是从体网格提取面,里面的点类改改的话别的地方还可以复用,stl和boost里应该都没有点类吧……


构造函数比较奇怪,是因为要从文本里提取内容,主程序里把文本按行给到string再吧string给到构造函数,格式不同的话修改parse函数


个人觉得convert编的比较笨,一时想不起来有什么好的办法,用string类么?总不能用c编一个吧:)


//点类
//去逗号功能
//类型转换功能string  to  float
#include <string>
#include <iostream>
#include <sstream>


#ifndef _POINT_
#define _POINT_


using namespace std ;


string parse(string str)
{
       string parsed_str(str , 0 ,str.size()-1) ;
       return parsed_str ;
}


float convert(string str)//效率问题,不是很高效
{
      float fl ;
      istringstream stream(str) ;
      stream >> fl ;
      return fl ;
}


class point
{
      private:
              string number , x , y , z ;
             
      public:
             point(string line)
             {
                          string word ;
                          istringstream stream(line) ;
                          //stream >> word ;
                          stream >> word ;
                          number = word ;
                          stream >> word ;
                          x = word ;
                          stream >> word ;
                          y = word ;
                          stream >> word ;
                          z = word ;
             } ;
             point()
             {} ;
            
            
             void printing() ;
            
             float getx() ;
             float gety() ;
             float getz() ;
            
             string getsx() ;
             string getsy() ;
             string getsz() ;
             string getsnumber() ;
            
             inline bool operator < (const point &m) const
             {
                    if (convert(z) == convert(m.z))
                    {
                                   if(convert(y) == convert(m.y))
                                  
                                      return convert(x) < convert(m.x) ;
                                  
                                   else
                                  
                                      return convert(y) < convert(m.y) ;
                    }
                    else
                    return convert(z) < convert(m.z) ;
                   
             }
} ;


 


void point::printing()
{
     cout << "number = " << number << endl ;
     cout << "x = " << x << endl ;
     cout << "y = " << y << endl ;
     cout << "z = " << z << endl ;
}


float point::getx()
{
      return convert(x) ;
}


float point::gety()
{
      return convert(y) ;
}


float point::getz()
{
      return convert(z) ;
}


string point::getsx()
{
       return x ;
}
string point::getsy()
{
       return y ;
}
string point::getsz()
{
       return z ;
}
string point::getsnumber()
{
       return number ;
}


#endif

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
1
关闭 站长推荐上一条 /3 下一条