트위터를 하다 재미난 링크글을 봤습니다. 해외 블로거가 C++에서 문자열을 정수로 변환하는 함수들을 비교해놨더군요. 평소 별생각 없이 atoi를 주로 써왔는데, 덕분에 다른 변환 함수들에 대해서도 알게된 유익한 글이라 포스팅 해봅니다.


해당 블로거는 정확성, 안정성, 속도등 9가지 항목을 메기고 아래 10가지 함수들을 비교하였더군요.


  • Manually 
  • atoi()
  • strtol()
  • sscanf()
  • std::stoi (C++11 only)
  • std::istringstream
  • Boost.LexicalCast
  • Boost.LexicalCast with C locale
  • Boost.Spirit.Qi
  • Boost.Coerce


결과만 보자면, C++11를 사용하고, 서드파티 라이브러리를 사용하고 싶지 않다면 std::stoi가 좋은 대안이 될수 있고, Boost를 사용한다면 LexicalCast가 다방면으로 좋지만 기본으로 Locale 이 잡혀있지 않다는군요. C 기본 라이브러리 함수들은 성능은 괜찮으나 역시나 에러 검출, 안정성등의 문제가 많아 사용시 주의해야 한다고 합니다.


자세한 테스트 방법과 내용은 원문글로 대체 하겠습니다.

http://www.kumobius.com/2013/08/c-string-to-int/

+ Recent posts