2017-12-15 3 views
2

정수를 사용하여 문자열로 변환하는 함수 str이 있습니다. 나는 또한 그 값의 문자열의 부분 문자열을 고려하기를 원한다. 문자 값보다 문자 값이라면 쉽다.문자열 함수 결과의 하위 문자열을 참조 할 수 있습니까?

즉,이 같은 것을 쓰고 싶습니다

str(12345)(2:3) 

대신이 작업을 수행 할 필요없이 :

character(10) :: c 
c = str(12345) 
print *, c(2:3) 

또는 내 자신의 substr() 기능을 압연. 임시 문자 변수에 문자 값을 저장하거나 다른 함수를 작성하지 않고 원하는 것을 수행 할 수있는 방법이 있습니까?

program main 

    character(10) :: c 

    ! works fine 
    c = str(12345) 
    print *, c(2:3) 

    ! nope 
    print *, str(12345)(2:3) 

    ! this would work if i wrote a substr function 
    print *, substr(str(12345), 2, 3) 

contains 

    character(len=1064) function str(k) 
     ! convert an integer to string 
     integer, intent(in) :: k 
     write (str, *) k 
     str = adjustl(str) 
    end function str 

end program main 
+0

은 동일합니다 여부를하지만 블라디미르의 대답은 기본적으로 너무 같은 경우 @francescalus는 나도 몰라 이 시점에서 당신과 블라디미르의 전문 지식을 받아 들일 수있어서 기쁩니다. 그러나 여전히 유용한 아이디어에 관심이 있습니다. – JohnE

+1

str()에 선택적 인수를 추가하는 방법 (예 : str (12345, idx = [2, 삼])? – roygvib

+0

예, 배열과 매우 비슷합니다. 나는 실제로 복제본을 검색하려고 시도했지만 처음 히트 곡 중 하나를 보지 못했습니다. –

답변

2

아니, 당신은 하위 문자열 수 또는 배열 인덱스 포트란 표현 :

여기에 완벽한 프로그램입니다. 함수 결과는 표현식입니다. 임시을 피하는 가장 가까운 것은 포트란 2003 associate을 사용하고 있습니다,하지만 당신은 많은 코드를 저장하지 않습니다 중 하나

associate(c=>str(12345)) 
    print *,c(2:3) 
end associate 
관련 문제