欢迎来到天天文库
浏览记录
ID:48411668
大小:182.50 KB
页数:51页
时间:2020-01-19
《7宽位字符串映射.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、6.11宽位字符串映射宽位字符串映射与字符串映射基本一样。主要是由函数wstring_alloc,wstring_dup和wstring_free来完成内存的分配和释放。定点数据类型的映射C++中没有定点数据类型,因此C++对定点数据类型的支持与运算是由一个类和一组重载的运算符函数提供。namespaceCORBA{//……classFixed{//……};}通过这一映射,就可以在C++中使用定点数的数值,并对它们进行计算。定点数据类型的映射6.12.1构造函数通过构造函数将完成这一转换:Fixedf=999;//fied<3,0>Fixedf1=1000.0;//fied<4,
2、0>Fixedf2=1000.05;//fied<6,2>Fixedf3=0.1;//fied<18,17>Fixedf=1E30;//fied<31,0>Fixedf=1E29+0.89;//fied<31,1>-----------1E29+0.8在初始化时由于二进制数表示上的特殊性,也可能会产生一些变化,例如在许多现实中0.1的实际值是0.10000000000000001。还可能被截断如1E29+0.89被截断为1E29+0.8。定点数据类型的映射对超过31个的整数位的数值进行初始化会产生一个DATA_CONVERSION异常。构造字符串类型的Fixed值遵循IDL定点数
3、常量的规则,字符串前面的0和后面的0被忽略掉。“d”或“D”是可选的。例如:Fixedf1=“1.2”;fixed<2,1>Fixedf1=“01.20D”;fixed<2,1>。6.12.2存取函数fixed_digits和fixed_scale成员函数分别返回数值位数和小数位数的值。例如:Fixedf=“3.14D”cout<4、ixed值转换为LongDouble值定点数据类型的映射6.12.4截断与舍入truncate成员函数返回一个包括指定的数值位数与小数位数的新的Fixed值,并且在需要时,将小数位数进行截断:例如:Fixedf=“0.99”;cout<5、;Fixedf3=“-0.445”;r=f1.round(0);//0r=f1.round(1);//0.4r=f2.round(0);//0r=f1.round(1);//0.5r=f3.round(1);//-0.4r=f1.round(0);//-0.456.13结构的映射6.13.1定长度结构的映射IDL结构使用相对应的成员映射到C++结构。例如:structDetails{doubleweight;unsignedlongcount;};映射为:classDetails_var;structDetails{CORBA::doubleweight;CORBA::unsig6、nedlongcount;typedefDetails_var_var_type;//成员函数……};结构的映射可以在代码中使用生成的结构,和使用C++中的结构一样。例如:Detailsd;d.weight=9.5;d.count=12;C++允许静态初始化聚集。聚集:一个一个类、结构或数组中没有用户说明的构造函数、基类、虚拟函数或私有函数和保护的非静态数据成员,那么这个类、结构或数组都是一个聚集。上述的结构就是一个聚集,因此可以如下初始化:Detailsd={9.5,12};6.13.2变长度结构的映射:对于变长度的结构,C++映射就必须解决内存管理的问题。例如:structF7、{doublenum;stringal;};映射如下:classF_var;structF{CORBA::Doublenum;CORBA::String_mgral;typedefF_varvar_type;//成员函数……};结构的映射在此IDL字符串被映射为一个String_mgr类型,而不是String_var或char*类型。String_mgr类似于String_var,其区别就是String_mgr类中缺省的构造函数将字符串初始化为空字符串,而不是初始化为空指针。将篏
4、ixed值转换为LongDouble值定点数据类型的映射6.12.4截断与舍入truncate成员函数返回一个包括指定的数值位数与小数位数的新的Fixed值,并且在需要时,将小数位数进行截断:例如:Fixedf=“0.99”;cout<5、;Fixedf3=“-0.445”;r=f1.round(0);//0r=f1.round(1);//0.4r=f2.round(0);//0r=f1.round(1);//0.5r=f3.round(1);//-0.4r=f1.round(0);//-0.456.13结构的映射6.13.1定长度结构的映射IDL结构使用相对应的成员映射到C++结构。例如:structDetails{doubleweight;unsignedlongcount;};映射为:classDetails_var;structDetails{CORBA::doubleweight;CORBA::unsig6、nedlongcount;typedefDetails_var_var_type;//成员函数……};结构的映射可以在代码中使用生成的结构,和使用C++中的结构一样。例如:Detailsd;d.weight=9.5;d.count=12;C++允许静态初始化聚集。聚集:一个一个类、结构或数组中没有用户说明的构造函数、基类、虚拟函数或私有函数和保护的非静态数据成员,那么这个类、结构或数组都是一个聚集。上述的结构就是一个聚集,因此可以如下初始化:Detailsd={9.5,12};6.13.2变长度结构的映射:对于变长度的结构,C++映射就必须解决内存管理的问题。例如:structF7、{doublenum;stringal;};映射如下:classF_var;structF{CORBA::Doublenum;CORBA::String_mgral;typedefF_varvar_type;//成员函数……};结构的映射在此IDL字符串被映射为一个String_mgr类型,而不是String_var或char*类型。String_mgr类似于String_var,其区别就是String_mgr类中缺省的构造函数将字符串初始化为空字符串,而不是初始化为空指针。将篏
5、;Fixedf3=“-0.445”;r=f1.round(0);//0r=f1.round(1);//0.4r=f2.round(0);//0r=f1.round(1);//0.5r=f3.round(1);//-0.4r=f1.round(0);//-0.456.13结构的映射6.13.1定长度结构的映射IDL结构使用相对应的成员映射到C++结构。例如:structDetails{doubleweight;unsignedlongcount;};映射为:classDetails_var;structDetails{CORBA::doubleweight;CORBA::unsig
6、nedlongcount;typedefDetails_var_var_type;//成员函数……};结构的映射可以在代码中使用生成的结构,和使用C++中的结构一样。例如:Detailsd;d.weight=9.5;d.count=12;C++允许静态初始化聚集。聚集:一个一个类、结构或数组中没有用户说明的构造函数、基类、虚拟函数或私有函数和保护的非静态数据成员,那么这个类、结构或数组都是一个聚集。上述的结构就是一个聚集,因此可以如下初始化:Detailsd={9.5,12};6.13.2变长度结构的映射:对于变长度的结构,C++映射就必须解决内存管理的问题。例如:structF
7、{doublenum;stringal;};映射如下:classF_var;structF{CORBA::Doublenum;CORBA::String_mgral;typedefF_varvar_type;//成员函数……};结构的映射在此IDL字符串被映射为一个String_mgr类型,而不是String_var或char*类型。String_mgr类似于String_var,其区别就是String_mgr类中缺省的构造函数将字符串初始化为空字符串,而不是初始化为空指针。将篏
此文档下载收益归作者所有