본문 바로가기
카테고리 없음

string타입의 메소드

by plzfday 2018. 5. 2.

c_str() 함수

string 타입에서는 C 스타일의 문자열 변환 메서드를 지원하는데 바로 그 함수가 c_str()이다.

c_str()의 사용법(<string> 헤더를 포함해야 한다.)

string str = "Hello";
const char* cstr = str.c_str();

const char*로 해야하는 이유는 c_str()의 반환형이 const char*이기 때문이다.

data() 함수

또한 data()라는 함수는 char* 타입을 리턴한다.

string str = "HELLO";
char* ccstr = str.c_str();

문자열의 타입 추론

문자열 리터럴은 원래 const char* 타입으로 인식된다. 그래서 auto를 사용해서 문자열을 만들 때 s를 붙이지 않으면 const char* 타입으로 인식된다.
auto string1 = "Hello World"; // string1: const char* 타입이다.
auto string2 = "Hello World"s; // string2: string 타입이다.
// s를 붙이려면 using namespace std;나 using namespace std::string_literals를 선언해야 한다.

to_string() 함수

숫자들을 string 타입으로 바꾸는 함수이다.
long double d = 3.14L;
string val = to_string(d);

stoi() 함수

첫 번째 매개변수: 문자열(string type). 2, 3번째 매개변수들은 예제를 보면서 설명한다.

#include <iostream>
#include <string>
using namespace std;
int main()
{
    const string s = "123abc";
    size_t idx = 0;
    int value = stoi(s, &idx);
    // 3번째 매개변수는 base로 진법을 뜻한다.(기본값 = 10진법)
    cout << value << endl;
    // output: 123
    cout << idx << endl;
    // output: 3
    return 0;
}

우리가 알던 atoi() 함수와 비슷한 역할을 하는 것 같다. 다만 string type이라는 점이고 앞으로는 atoi 말고 stoi를 쓸 것 같다.

size_t idx는 주소를 넘겨주는데 숫자 다음의 인덱스 값을 넘겨주면 숫자 바로 다음 인덱스 값이 저장된다. 그래서 예제에서는 123이 숫자이므로 3번째 인덱스가 idx에 저장되게 된다. (기본값이 있어서 생략해도 된다.)

세 번째 매개변수는 진법을 뜻한다. 기본값으론 10이 설정되어 있다.(즉, 생략 가능)

댓글