在Fortran 90中将字符串转换为整数

use*_*976 9 string fortran integer character fortran90

我知道IACHAR(s)在字符串s的第一个字符位置返回ASCII字符的代码,但我需要将整个字符串转换为整数.我也有一些字符串(大约30个字符串,每个字符串最多包含20个字符).有没有办法将它们中的每一个转换为Fortran 90中的唯一整数?

Ale*_*ogt 15

您可以read将字符串转换为整数变量:

module str2int_mod
contains 

  elemental subroutine str2int(str,int,stat)
    implicit none
    ! Arguments
    character(len=*),intent(in) :: str
    integer,intent(out)         :: int
    integer,intent(out)         :: stat

    read(str,*,iostat=stat)  int
  end subroutine str2int

end module

program test
  use str2int_mod
  character(len=20) :: str(3)
  integer           :: int(3), stat(3)

  str(1) = '123' ! Valid integer
  str(2) = '-1'  ! Also valid
  str(3) = 'one' ! invalid

  call str2int(str,int,stat)

  do i=1,3
    if ( stat(i) == 0 ) then
      print *,i,int(i)
    else
      print *,'Conversion of string ',i,' failed!'
    endif
  enddo
end program
Run Code Online (Sandbox Code Playgroud)

  • `read(str,*,iostat = stat)int` < - 这是我搜索同样事物的其他人的重要部分.谢谢Alex.以下是其他一些示例:http://www.eng-tips.com/viewthread.cfm?qid = 4357&http://vikas-ke-funde.blogspot.com/2010/06/int2str-and-str2num-in -fortran-how.html (11认同)