2014-06-05 11 views
6

IACHAR(s)은 문자열 s의 첫 번째 문자 위치에 ASCII 문자의 코드를 반환하지만 전체 문자열을 정수로 변환해야한다는 것을 알고 있습니다. 또한 몇 개의 문자열 (약 30 개 문자열, 각각 최대 20 문자로 구성)이 있습니다. Fortran 90에서 각각의 고유 한 정수로 변환 할 수있는 방법이 있습니까?Fortran 90에서 문자열을 정수로 변환

+1

는 포맷 된 수치 ASCII에 또는으로 따라 전체 문자열로 변환? "123"은 정수 123을 가져야합니까? 예인 경우 http://stackoverflow.com/questions/1262695/converting-integers-to-strings-in-fortran 및 http://stackoverflow.com/questions/13316378/fortran-integer-to-string-example –

+0

받는 사람을 참조하십시오. 예를 들어,'abcdefghijklmnopqrst'와 같은 임의의 20 자 문자열을 어떤 정수로 변환 하시겠습니까? –

+0

참조 http://stackoverflow.com/questions/21370190/extract-integers-from-string-in-fortran 및 http://stackoverflow.com/questions/18790805/fortran-reading-mixed-string-and-numeric- data –

답변

11

당신은 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 
+3

'read (str, *, iostat = stat) int' <- 이것은 같은 것을 찾는 나 같은 다른 사람들에게 중요한 부분이다. 알렉스 고마워. 다른 예가 있습니다 : http://www.eng-tips.com/viewthread.cfm?qid=4337 & http://vikas-ke-funde.blogspot.com/2010/06/int2str-and-str2num-in -fortran-how.html – 5upa

관련 문제