前段用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
文章评论(0条评论)
登录后参与讨论