영벨롭 개발 일지

[C++] string 라이브러리 사용법 본문

Programming Language/C & C++

[C++] string 라이브러리 사용법

영벨롭 2022. 2. 21. 12:32

헤더파일: #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

 

반응형