唤起那些年你对IDL的记忆(二)
来源:互联网 发布:外网访问centos 编辑:程序博客网 时间:2024/05/21 11:33
上一节唤起那些年你对IDL的记忆(一),我们已经对IDL的基础–数组有了比较深的说明,之所以我在写第一篇时复制了大量的IDL-Help的说明,目的是为了让跟我一样初学IDL的同学们能记住一点,就是不要脱离了IDL-Help去学习IDL。其实,说白了任何一种语言的学习,并不是说你获得了一本内容非常丰富的书,你把它看了几遍,你就掌握了这门语言,除了你要不断的书写程序,还有一点比较重要的就是学会查看API。
因此,学会如何查看IDL-Help,并且有意识的遇到不懂或者忘记的,就去看Help,个人觉得这是快速学习任何一种语言最有效,也是最快速的方法。
字符串
字符串创建
创建一个字符串,可以使用“”或者‘’
IDL> s1="abdsde"IDL> s2=strarr(6)IDL> help,s2S2 STRING = Array[6]IDL> s3="11IDL> print,s3 9IDL> ;"代表8进制,输出是十进制:9IDL> str="abaed""IDL> print,strabaed"IDL> str="abaed'"IDL> print,strabaed'IDL>
字符串连接
字符串连接直接用“+”
IDL> print,s1abdsdeIDL> print,strabaed'IDL> s3=s1+strIDL> print,s3abdsdeabaed'
字符串转换
使用类型转换函数可以将字符串转换成其它数据类型。字符串可以直接转换成字节类型(byte),而整形、浮点型等其它类型不允许转换,需要先将字符串转换成字节类型,再转为其它类型。逆变换也是如此。
IDL> print,s1abdsdeIDL> print,byte(s1) 97 98 100 115 100 101IDL> print,fix(s1)% Type conversion error: Unable to convert given STRING to Integer.% Detected at: $MAIN$ 0IDL> print,fix(byte(s1)) 97 98 100 115 100 101IDL> print,string[97,98,100,115,100,101]% Variable is undefined: STRING.% Execution halted at: $MAIN$ IDL> print,string([97,98,100,115,100,101]) 97 98 100 115 100 101IDL> print,string(byte([97,98,100,115,100,101]))abdsde
这里实际上转换的依据是ASCII码,附上一张ASCII码表
图1 ASCII码表
处理函数
在这里只附上一张处理函数表方便常用的字符串处理函数查找,更加详细的介绍请自行查阅IDL-Help:
图2字符串处理函数表
特殊字符
IDL支持绝大多数的ASCII码显示输出,下表所列的特殊字符无法打印输出
图3 特殊字符
结构体
IDL-Help给采购员Structure数据结构的定义如下:
A compound data type that contains pairs of tags and values, where the values can be of any data type. Once a structure is created, neither the tags nor the data types of the values associated with the tags can be changed.
董老师的书中是这样说明结构体的:
结构体是一种复合变量,它可以是变量、数组或结构等类型的集合,通常用于程序参数传递或数据交换。
其实,说白了这就是一种数据结构。
结构体可以分为:命名结构体和匿名结构体
命名结构体
创建用{},同时赋予结构体名字。
格式:{name,tag1:value1,tag2,value2…}
IDL> help,{str1,a:1,b:2}** Structure STR1, 2 tags, length=4, data length=4: A INT 1 B INT 2
命名结构体支持结构体继承,例如:
IDL> struct2={str2,inherits str1,c:3}IDL> help,struct2,/structure** Structure STR2, 3 tags, length=6, data length=6: A INT 0 B INT 0 C INT 3
匿名结构体
IDL> str={name:'ergou',sex:'女',shcool:"SDAU"}IDL> HELP,str** Structure <a3a77a0>, 3 tags, length=48, data length=48, refs=1: NAME STRING 'ergou' SEX STRING 'Ů' SHCOOL STRING 'SDAU'
注:这里有个问题就是汉字不识别,编码设置中没有GB2312编码方式
访问结构体
通过“变量名.成员名”或者“变量名.(index)”
IDL> help,str** Structure <a3a77a0>, 3 tags, length=48, data length=48, refs=1: NAME STRING 'ergou' SEX STRING 'Ů' SHCOOL STRING 'SDAU'IDL> IDL> print,str.NameergouIDL> print,str.(0)ergou
结构体操作函数
图4 结构体操作函数
遍历结构体成员
PRO traverse_struct struct1={a:1,b:2,c:3,d:4} ;获取成员数量 tagNumber=N_Tags(struct1) ;获取成员名字 tagName=Tag_Names(struct1) FOR i=0,tagNumber-1 DO BEGIN PRINT,'Name:',tagName[i],'Value:',struct1.(i) ENDFOREND
遍历结果:
Name:AValue: 1Name:BValue: 2Name:CValue: 3Name:DValue: 4
- 唤起那些年你对IDL的记忆(二)
- 唤起那些年你对IDL的记忆(一)
- 唤起你对c#曾经的记忆
- 齐河方言(唤起了儿时的记忆……天真快乐着)
- 那些年我们一起对篮球的记忆,文字控吧
- 那些伤感的记忆
- 那些你不知道的项目管理细节(二)
- 你不知道XML编程的那些事儿(二)
- http你不得不知道的那些事(二)--CSRF
- C++调用IDL程序的做法(二)
- TAO对IDL 文件的编译
- 虚拟现实新应用 唤起人们对气候变化的重视
- 让你的App能够在搜索结果中唤起
- 那些年 那段青春 那些感动过的话 那些回不去的刻骨记忆
- 读《启动记忆》笔记(二)记忆的基本技巧
- 那些年,错过的时光(二)
- 无锡城院记忆之那些年我们一起补考的记忆
- ADO.NET的记忆碎片(二)
- 数据结构-4-160808约瑟夫算法-无头循环链表
- Libevent使用例子,从简单到复杂
- 基准标注不可采用的字母
- HDU1025——Constructing Roads In JGShining's Kingdom
- Java 以字符串为源进行流读取-解决读取复杂字符串问题
- 唤起那些年你对IDL的记忆(二)
- cocoapods的安装 遇到 Error installing pods:activesupport requires Ruby version >=2.2.2
- Spring学习总结——Spring整合MyBatis(Maven+MySQL)二
- android studio 更新 Gradle错误解决方法
- 朴素贝叶斯分类
- 深度学习caffe平台--train_val.prototxt文件中视觉层(Vision Layers)层及参数详解
- ffmpeg源代码解读:ffurl_alloc
- 通过CAGradientLayer制作渐变色效果【原创】
- python中*args **kw到底是什么意思?