分类: C/C++
2012-03-26 13:19:37
字符串的声明方式如下:
CHARACTER[(LEN=整型字符长度表达式[,KIND=种别值])][,属性说明] :: 变量名表[=初始值]
前面已经提到字符的种别只能是1,但是它有一个len的选项。比如:CHARACTER(LEN=12,KIND=1) :: A,B或CHARACTER(KIND=1,LEN=12) :: A,B,len和kind可以省去,但len值必须在前面,如character(12, 1) :: A, B,种别值也可以省略:character(12) :: A, B,它等价于character*12 :: A, B。
字符的长度在声明时可以用*表示为不确定,比如character(len=*), parameter :: c = "abcde"。这行等同于C语言里的const char[] c = "abcde";。只有声明为parameter属性或者过程哑元(dummy argument)时,才可以使用不确定的长度。(哑元在后面介绍)。
字符子串可以通过s(a:b)方式得到,比如s为“abcdefg”,s(3:5), s(:3), s(5:),
s(:),
s(4:4)分别返回:cde、abc、efgh、abcdefgh和d。注意fortran中索引从1开始,而不是从0开始。子串可以进行赋值,比如
s(3:5) = "xyz"。赋值时,如果左边变量的长度更小,则只取右边字符串的前面一部分;如果左边变量长度更大,则在多出的部分补空格。
//操作符可以把两个字符串拼接,比如s//"tommy",可以产生一个新的字符串。
可以用<、>、==和\=来比较两个字符串,区分大小写。"Tommy"和"tommy"是不等的。字符串末尾的空格会被忽略,比如"tommy "与"tommy"是相等的,但字符串开头的空格不会被忽略,比如" tommy"和"tommy"就是不等的。此外还有比较字符大小的函数:LGE、LGT、LLE、LLT:
引用方式 |
含 义 |
例 |
LGE(a1,a2) |
a1是否≥a2 |
LGE(‘A’,‘B’)值为假 |
LGT(a1,a2) |
a1是否>a2 |
LGT(‘A’,‘B’)值为假 |
LLE(a1,a2) |
a1是否≤a2 |
LLE(‘A’,‘B’)值为真 |
LLT(a1,a2) |
a2是否<a2 |
LLT(‘A’,‘B’)值为真 |
其它与字符串相关的函数: