Lyn
조회 수 28405 추천 수 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
    와우 좋은 정보 입니다.
    제 블로그에도 퍼갈게요 좋은 하루 되세요 ^^

List of Articles
번호 제목 글쓴이 날짜 조회 수
57 Visual Studio 2013 새로 추가된 기능 둘러보기 file Lyn 2013.10.28 19933
56 Microsoft C++ MVP 리워드를 개봉 해 보았습니다. 3 file Lyn 2013.10.11 51174
55 MS SQL Server 2012 언인스톨시 Rsfx Driver 의존성으로 인해 언인스톨이 되지 않는 경우 Lyn 2013.10.09 20019
54 Visual C++ 2013 RC 추가기능 1. Raw String Literal 3 file Lyn 2013.10.07 15847
53 Microsoft VC++ MVP를 받았습니다.... file Lyn 2013.10.02 15235
52 서버를 Windows 2012 R2로 교체 하였습니다. 1 Lyn 2013.09.29 22202
51 VS2013 RC 설치해봄 file Lyn 2013.09.28 14118
50 현재 MSDN Download Page file Lyn 2013.09.23 19652
49 boost::icl::interval_map 원하는대로 변경해서 사용해보기 file Lyn 2013.09.23 22351
48 MSDN 에 릴리즈된 MS 제품들입니다. 1 file Lyn 2013.09.10 20657
47 C Runtime Library Exception Dump 남기기 두번째 방법 Lyn 2013.06.25 25969
46 C Runtime Library Exception Dump 남기기 첫번째방법 Lyn 2013.06.11 33179
45 Visual Studio 2012 Update2 Offline 설치 1 Lyn 2013.04.11 23621
44 C++11 표준 라이브러리 확장 (cbegin, cend) Lyn 2012.10.04 34570
» C++11 표준 라이브러리 확장 (string) 3 file Lyn 2012.09.10 28405
42 대기하는 쓰래드 모두 깨우기 (Java의 notifyAll) Lyn 2012.09.04 38052
41 C++ 템플릿 상속에서 베이스 클래스의 멤버에 접근하는 경우의 문제 1 file Lyn 2012.08.29 30416
40 [윈도8] 윈도8 구경1 1 file Lyn 2012.08.17 26664
39 C++ string&형 인자에 기본값 주기 Lyn 2012.07.24 26031
38 [작성중] 윈도우 32bit, 64bit 프로그래밍시 주의할점 2 Lyn 2012.07.16 27752
Board Pagination Prev 1 ... 2 3 4 5 6 7 ... 8 Next
/ 8