glib 줄 (gchar *)에서 정수를 구문 분석하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1622284

  •  06-07-2019
  •  | 
  •  

문제

정수 값의 숫자를 포함하는 문자열이 있으며 int 로이 값을 얻고 싶습니다. 나는 이것을 수행하는 다른 방법이 있다는 것을 알고 있습니다. atoi(); 그러나 나는 이것을하기 위해 glib을 사용하고 싶습니다. 그러한 구문 분석/변환 기능이 존재합니까?

도움이 되었습니까?

해결책

GLIB는 표준 C 라이브러리의 많은 부분에 입력에 대한 안전 점검과 실용적인 개선 사항을 제공합니다.

당신이 찾고있는 기능은입니다 g_ascii_strtoll().

Pedantic Addeendum

atoi() 로케일을 같은 방식으로 취급합니다 strtol 그리고 g_ascii_strtoll(). 맨 페지와 글리브 문서를 매우 신중하게 읽으면이를 보여줍니다. 다음은 할 수없는 사람들을위한 몇 가지 스 니펫이 있습니다 RTFM:

atoi()

atoi () 함수는 nptr에 의해 지적 된 문자열의 초기 부분을 int로 변환합니다. 행동은 동일합니다 strtol(nptr, (char **) NULL, 10); 해당 ATOI ()는 오류를 감지하지 않습니다.

strtol()

"C"로케일 이외의 지역에서는 다른 줄도 받아 들일 수 있습니다. (예를 들어, 현재 로케일의 수천 건의 분리기가 지원 될 수 있습니다.)

g_ascii_strtoll()

문자열을 gint64 값으로 변환합니다. 이 함수는 표준 strtoll () 함수가 C 로케일에서하는 것처럼 동작합니다. 실제로 현재 로케일을 변경하지 않고이 작업을 수행합니다. 스레드 안전하지 않기 때문입니다.

로케일 변경

이것이 Sans-Locale이 충분하지 않은 경우 환경 변수를 통해 로케일을 설정하고/또는 명시 적으로 호출 할 수 있습니다. setlocale()

다른 팁

GLIB는 응용 프로그램을 개발하기위한 공통 기반을 제공하는 범용 라이브러리입니다. 이는 Glib가 모든 표준 C 라이브러리를 상환하는 것이 아니라 모든 지원되는 플랫폼에서 사용할 수없는 (또는 일관되지 않은) 모든 것을 추상화합니다.

요컨대, 표준을 사용해야합니다. atoi() 기능 : Glib는 gdouble 그리고 gint64 변형.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top