일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- HTML #CSS
- 컴퓨터공학 #c #c언어 #문자열입력
- 잔
- 컴퓨터공학 #자료구조 #스택 #c++ #알고리즘 #백준문제풀이
- 컴퓨터공학 #Java #자바 #클래스 #객체 #인스턴스
- BOJ #컴퓨터공학 #C++ #알고리즘 #자료구조
- Today
- Total
영벨롭 개발 일지
[C++] string 라이브러리 사용법 본문
헤더파일: #include<string>
- 선언 및 초기화
string 클래스를 선언은 다음과 같이합니다.
string str;
초기화 하는 방법에는 여러 가지가 있습니다.
string str1="Hello"; //선언과 동시에 초기화
string str2, str3; //선언
str2="World"; //초기화
str3.assign("Hello World"); //assign() 함수를 이용하여 할당
string str4(str3); //str3의 내용으로 초기화
동적 할당하는 방법도 있는데요. 동적 할당을 하게 되면 string 변수 사용 후 delete를 이용하여 동적 메모리 해제를 해주어야 합니다.
string *str=new string("hello"); //동적 할당
delete str; //동적 메모리 해제
- string 입력
- 공백 포함하지 않는 문자열 입력
cin >> str;
- 공백 포함하는 문자열 입력
getline(cin, str);
- 사이즈 관련
- str.size(), str.length()
string의 사이즈를 반환합니다.
string str="Hello";
str.size(); //출력 시: 5
- str.capacity()
string 객체에 할당된 메모리 크기(bytes)를 반환합니다. capacity는 string 길이가 증가할 수 있기 때문에 size에 대비해서 여유롭게 할당합니다.
- str.resize(n), str.resize(n, char c)
string을 n 크기로 설정합니다. 만약 원래 size보다 크다면 빈 공간으로 채우고, 작다면 남은 string을 버립니다.
str.resize(n, char c) 로 사용한다면 남은 공간을 c로 채웁니다.
string str("hello world");
str.resize(5); //str="hello"
str.resize(10, 'a'); //str="helloaaaaa"
- str.shrink_to_fit()
string 길이에 비해 낭비되고 있는 capacity를 줄이는 함수입니다.
- str.reserve(n)
문자열을 넣기 전, 미리 n 크기 만큼의 capacity를 할당하는 함수입니다.
- str.clear()
string의 문자열을 지우는 함수입니다. 이때 size는 0이 되고, capacity는 그대로 남게 됩니다.
- str.empty()
string이 비어있다면(size가 0일 때) true를, 그렇지 않다면 false를 반환하는 함수입니다.
- string 인자 접근 access
- str.at(index)
string의 index 번째의 문자를 반환합니다. 이때 index가 string의 범위를 벗어나게 되면 예외를 뱉습니다.
- str[index]
at() 과 동일하게 index 번째의 문자를 반환합니다.
string의 index 범위를 검사하지 않기 때문에 at() 보다는 빠르지만 예외를 뱉지 않습니다.
- str.front(), str.back()
각각 string의 맨 앞, 맨 뒤 인자를 반환합니다.
- 문자열 관련 함수
- str.substr(index, len)
string의 index부터 len 만큼의 문자열을 반환합니다.
string str="Hello World";
cout << str.substr() << endl; //Hello World
cout << str.substr(6) << endl; //World
cout << str.substr(6, 2) << endl; //Wo
- str1.replace(index, len, str2)
문자열 str1의 index 부터 len 크기 만큼 범위를 str2로 대체하는 함수입니다.
string str1="Hello World";
string str2="new";
str1.replace(5, 3, str2);
cout << str1 << endl; //Hellonewrld
- str1.compare(str2)
문자열 str1과 str2를 비교해서 같으면 0, 다르면 -1을 반환합니다.
string str1 = "hello world";
string str2 = "new";
string str3 = "new";
cout << str1.compare(str2) << endl; //-1
cout << str2.compare(str3) << endl; //0
- str.copy(char *arr, len, index=0)
string str의 index부터 len 크기 만큼을 문자열 arr에 복사합니다.
string str = "hello world";
char arr[16];
str.copy(arr, 5);
for (int i = 0; i < 5; i++) //hello
cout << arr[i];
- str1.find(str2, index=0)
string str1 중에 매개변수로 들어온 str2과 일치하는 것이 있다면 그 첫 번째 index를 반환하고 없다면 쓰레기 값을 반환합니다.
string str = "hello world";
cout << str.find("world") << endl; //6
cout << str.find("temp") << endl; //쓰레기 값
- 추가 & 삽입
- + 연산자
두 문자열을 + 연산자를 이용하여 연결할 수 있습니다.
string str1 = "hello";
string str2 = " world";
cout << str1 + str2 << endl; //hello world
- str1.append(str2)
string str1 끝에 str2를 추가합니다.
string str1 = "hello";
string str2 = " world";
cout << str1.append(str2) << endl; //hello world
- str1.insert(index, str2)
string str1의 index 위치부터 str2의 내용을 삽입하는 함수입니다.
string str1 = "Hello World";
string str2 = "New ";
cout << str1.insert(6, str2) << endl; //Hello New World
- str.push_back(c), str.pop_back()
string str의 맨 뒤에 문자를 추가, 삭제하는 함수입니다.
- 기타 함수
- swap(str1, str2)
string str1과 str2을 바꾸는 함수입니다.
string str1 = "hello";
string str2 = "world";
cout << str1 << " " << str2 << endl; //hello world
swap(str1, str2);
cout << str1 << " " << str2 << endl; //world hello
- 문자열을 숫자로 변환하는 함수들
string 문자열을 숫자로 변환하는 함수들은 다음과 같습니다.
함수 | 설명 |
stoi(str) | int 형으로 변환 |
stol(str) | long 형으로 변환 |
stoll(str) | long long 형으로 변환 |
stof(str) | float 형으로 변환 |
stod(str) | double 형으로 변환 |
string str1 = "10";
string str2 = "3.14";
int i = stoi(str1);
float f = stof(str2);
cout << i << " " << f << endl; //10 3.14
- to_string(n)
to_string() 함수는 숫자 타입의 데이터를 안전하게 string 타입으로 변환하도록 하는 함수입니다.
이때 매개변수로 들어오는 n의 자료형에는 int, long, long long, unsigned, unsigned long, unsigned long long, float, double, long double이 있습니다.
int n1 = 10;
int n2 = 20;
string str = to_string(n1) + to_string(n2);
cout << str << endl; //1020
'Programming Language > C & C++' 카테고리의 다른 글
[C++]STL 해시 테이블 unordered_set과 unordered_map (0) | 2022.04.26 |
---|---|
[C++]순열 next_permutation STL 사용하기 (0) | 2022.03.31 |
[C++]std::array 클래스 사용법 (0) | 2022.03.29 |
[C++]system() 함수 - 몇 가지 명령어 사용해보기 (0) | 2022.03.06 |
[C언어]문자열 입력 함수: scanf(), gets(), fgets() (0) | 2022.02.15 |