c++ 이전에 문자열 처리는 단지 null-terminated char현 배열이었다. 이런 불편함을 해결하기 위해 c++에서는 std::string 클래스가 사용된다.
string에서 전통적인 c style의 함수를 사용하기 위해서 두가지 함수가 사용된다. 차이점은 C++ 17부터 data함수가 리턴값으로 const형을 사용하지 않는 char*를 사용할 수 있게 되었다. 역시 함수의 인자로 넘겨줄때 필요할 수 있겠다. 하지만 이와같은 함수는 오로지 기존의 legach c-style의 함수를 사용할 때만 사용해야 할 것이다.
string을 초기화하는 여러가지 방식을 설명한다.
Line 18: brace초기화 방법을 통해 특정 문자열로 바로 초기화 할 수 있다.
Line 21: 생성자 초기화를 통해 임을 글자를 반복하여 초기화 할 수 있다.
Line24: 다른 문자열을 기반으로 임의 영역을 초기화 할 수 있다.
숫자를 스트링으로 변환시 to_string을 이용할 수 있다. 다형성을 지원하여 모든 종류의 숫자를 스트링으로 변형하는데 아쉽게도 아직까지는 자릿수는 지정할 수 없는듯 하다.
스트링 안에 캐릭터들에 접근하여 값을 변경할 수 있다. 샘플 코드에서는 std::toupper 로 사용했었는데. 실제 코드에서는 컴파일 에러가 나서 한참 헤매다가 전역 함수로서 처리하여 테스트를 통과 시켰다.
부분 문자열을 추출하는 함수다. 첫번째 인자로 인덱스 두번째 인자로 count 를 사용할 수 있는제 Line50, 53을 보듯이 count는 범위를 벗어나도 문제가 발생하지 않는다.
스트링은 연산자 재 정의를 통해 비교할 수 있고, Compare함수를 통해 비교할 수 있다. 대신 Compare 함수를 이용하면 좀 더 상세하게 비교할 수 있다. 비교시 인자보다 클경우는 0보다 큰 값을, 동일할 경우 0값을, 작을 경우 0보다 작은 값을 리턴한다. 문자열의 크다, 작다는 각 대응 글자마다 비교하면서 내부 값을 가지고 비교하는 것이다.
'Language & Toolkit > C++' 카테고리의 다른 글
STL container - std::map & set (0) | 2019.03.10 |
---|---|
STL container - std::vector (0) | 2019.03.09 |
Beginning C++17 - Chapter 6: Pointers and References (0) | 2019.02.06 |
Beginning C++17 - Chapter 5: Array and loops (0) | 2019.01.27 |
Beginning C++17 - Chapter 4: Making Decisions (0) | 2019.01.27 |