Lyn
조회 수 28197 추천 수 0 댓글 3
Atachment
첨부 '8'
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

C++11 표준이 완성 되면서 상당히 많은 기능이 표준 라이브러리에 추가 되었습니다.

이들중 상당수는 완전히 새로운 클래스로 제공되는 것이 많지만 기존 기능을 보안하는 식으로 추가된것도 많습니다.

그중 가장 많이 쓰인다고 볼 수 있는 string 관련으로도 여러가지가 추가 되었습니다.


아래 코드는 최신의 Visual Studio 2012 에서 작성되었습니다.


첫번째로 Native언어 답게 메모리를 직접 관리 할 수 있는 함수가 추가 되었습니다.


1.png


원래 대부분의 stl 객체가 그렇든 한번 할당 한 메모리는 데이터 사이즈가 줄어든다 해도 줄이지 않았습니다.
하지만 C++11에서는 shrink_to_fit 매소드를 제공하여 메모리를 줄일 수 있도록 하고 있습니다.



2.png


그 다음으론 front, back, pop_back 함수의 추가입니다.
이름답게 front, back 은 각각 첫글자, 마지막 글자를 리턴하며 pop_back은 맨뒤에서 한글자를 잘라냅니다.



사실 이 다음부터가 가장 쓸만한 부분입니다.
C++의 string 은 숫자 관련 함수를 제공하지 않아 C의 atoi, itoa 처럼 배열을 기반으로 하는 함수를 사용하거나 stringstream 을 사용하여 문자열을 조립하는 과정을 필요로 하였습니다. C++11에서는 그것과 관련된 함수를 추가 하였습니다.


3.png


가장 기본적인 활용법입니다 stoi 함수는 문자열을 숫자로 변환합니다. type 에 따라 stoi, stol, stoll, stoul, stoull, stof, stod, stold로 바꿔쓸 수 있습니다.
각각 int, long, long long, unsigned long, unsigned long long, float, double, long double 로 변환하는 함수입니다.


4.png

뒤에 변환할 수 없는 문자열이 있을경우, 변환 가능한 부분 까지만 변환 후 몇글자가 변환되었는지 얻어올 수 있습니다.


5.png

진법 변환도 가능합니다.
16진수 100은 256으로 8진수 100은 64로 정상적으로 변환 되었습니다.

16진수 8진수만이 아니라 7진수 9진수 등 중간단계에 있는 진법으로도 정상적으로 변환이 가능합니다.


6.png


문자열을 언제나 숫자로 바꿀 수 있는것은 아니기 때문에 2 종류의 예외를 던질 가능성이 있습니다.
각각 숫자로 변환 불가능한 문자열과 너무 길어서 숫자의 범위를 넘어서는 문자열을 변환 시도 할 경우의 예외입니다.


7.png

기본적으로 0x를 앞에 붙일경우 0만 인식하여 0으로 변환 되지만 16진법으로 변화할 경우에 한정해서 0x를 인식하여 정상적인 문자열로 판단합니다.
8진법 변환의 경우 앞의 0 한자리만 인식하여 0으로 변환된것을 볼 수 있습니다.



지금까진 문자열을 숫자로 변환 하였지만 반대의 기능도 있습니다.


8.png


반대의 기능으로 to_string 함수를 제공합니다.
모든 정수/실수 타입에 대해 오버로딩 되어 있기때문에 단순히 호출만 하면 됩니다.


단 실수의 경우 무조건 소수점 7번째 자리에서 반올림하여 6자리로 표기하게 되어 있습니다.
자리수 조절이 필요 할 경우 format 기능이 있는 boost:format, stringstream, sprintf 등의 기존 함수를 사용하여야 합니다

?
  • ?
    노땅개발자 2012.09.25 01:15
    정리 참 잘해주셨네요.
    제 블로그에 출처 명시하고 퍼갑니다. ^^
  • ?
    최고의프로그래머 2012.09.26 01:35
    좋은 글 감사합니다. 출처명시하에 스크랩합니다
  • ?
    노력왕 2013.09.17 04:21
    와우 좋은 정보 입니다.
    제 블로그에도 퍼갈게요 좋은 하루 되세요 ^^

  1. Visual Studio 2013 새로 추가된 기능 둘러보기

    Date2013.10.28 ByLyn Views19821
    Read More
  2. Microsoft C++ MVP 리워드를 개봉 해 보았습니다.

    Date2013.10.11 ByLyn Views51041
    Read More
  3. MS SQL Server 2012 언인스톨시 Rsfx Driver 의존성으로 인해 언인스톨이 되지 않는 경우

    Date2013.10.09 ByLyn Views19907
    Read More
  4. Visual C++ 2013 RC 추가기능 1. Raw String Literal

    Date2013.10.07 ByLyn Views15728
    Read More
  5. Microsoft VC++ MVP를 받았습니다....

    Date2013.10.02 ByLyn Views15122
    Read More
  6. 서버를 Windows 2012 R2로 교체 하였습니다.

    Date2013.09.29 ByLyn Views22082
    Read More
  7. VS2013 RC 설치해봄

    Date2013.09.28 ByLyn Views14019
    Read More
  8. 현재 MSDN Download Page

    Date2013.09.23 ByLyn Views19526
    Read More
  9. boost::icl::interval_map 원하는대로 변경해서 사용해보기

    Date2013.09.23 ByLyn Views22197
    Read More
  10. MSDN 에 릴리즈된 MS 제품들입니다.

    Date2013.09.10 ByLyn Views20526
    Read More
  11. C Runtime Library Exception Dump 남기기 두번째 방법

    Date2013.06.25 ByLyn Views25803
    Read More
  12. C Runtime Library Exception Dump 남기기 첫번째방법

    Date2013.06.11 ByLyn Views33022
    Read More
  13. Visual Studio 2012 Update2 Offline 설치

    Date2013.04.11 ByLyn Views23450
    Read More
  14. C++11 표준 라이브러리 확장 (cbegin, cend)

    Date2012.10.04 ByLyn Views34447
    Read More
  15. C++11 표준 라이브러리 확장 (string)

    Date2012.09.10 ByLyn Views28197
    Read More
  16. 대기하는 쓰래드 모두 깨우기 (Java의 notifyAll)

    Date2012.09.04 ByLyn Views37888
    Read More
  17. C++ 템플릿 상속에서 베이스 클래스의 멤버에 접근하는 경우의 문제

    Date2012.08.29 ByLyn Views30200
    Read More
  18. [윈도8] 윈도8 구경1

    Date2012.08.17 ByLyn Views26510
    Read More
  19. C++ string&형 인자에 기본값 주기

    Date2012.07.24 ByLyn Views25860
    Read More
  20. [작성중] 윈도우 32bit, 64bit 프로그래밍시 주의할점

    Date2012.07.16 ByLyn Views27596
    Read More
Board Pagination Prev 1 ... 2 3 4 5 6 7 ... 8 Next
/ 8