c++ string 클래스 사용 (+ cin & cout)

한창희·2021년 10월 8일
0

문자열 문제에서 자주 사용하는 string 클래스를 정리해보자


#include < string >
using namespace std;


c++의 cin, cout을 통해 입출력이 가능하며

기존 c 에서의 scanf & printf로는 입출력이 불가하다!!


<cin & cout>

-> c++에서 사용되는 입출력 연산자

  • 사용 예시1
   char name[100];
    cin>>name;
    
    cout<<"내 이름은 "<<name<<"입니다\n";

  • 사용 예시2
#include <stdio.h>
#include <iostream>
#include <string>

using namespace std;



int main(){

	char name[100];
	cin >> name;
	printf("%c\n", name[0]);
    	printf("%s\n", name);

	string str1;
	cin >> str1;
	cout << str1 << "\n"; // 입력받은 문자열 출력

	printf("개행 확인\n");

	printf("%c\n", str1[0]);  // string 역시 인덱스로 문자 접근 가능

    	// printf("%s\n", str1); -> string 클래스는 cout으로 출력해야 한다
    
	return 0;
}

결과


- cin은 공백 이전까지 입력 받는다!!

string str1;
	cin >> str1;
	cout << "str1 : " << str1 << "\n";

결과


- 공백을 포함한 문장입력은 getline을 사용한다!

string str2;
	getline(cin, str2);
	cout << "str2 : " << str2 << "\n";

결과



<string 클래스 연산자 사용>

  • +연산자
string str1, str2, str3;

	str1 = "hi";
	str2 = "hi";

	str3 = str1 + str2;

	cout << str3 << "\n";


<문자열 길이>

  • string.length()
  • string.size()
    두 함수는 같다고 생각하면 된다

<문자 접근>

  • string[index] -> 유효한 범위인제 체크x -> at보다는 접근이 빠름

  • string.at(index)

  • string.front() - 문자열에서 가장 앞의 문자 반환

  • string.back()- 문자열에서 가장 뒤의 문자 반환


<삽입, 삭제, 추가 관련>

  • string.clear() - 저장된 문자열을 모두 지운다

  • string.erase() - clear와 같은 역할

  • string.erase(n,m) - index n번째 문자를 포함해서 m개를 지운다

  • string.erase(string.begin() + n) - 인덱스n 문자 제거

  • string.erase(string.begin() + n, string.begin() + m)
    -> 인덱스 n 부터 인덱스 m-1 까지의 문자들 제거

  • string.append(string) - 인자의 문자열을 뒤에 붙여준다(+와 같음)


<기타 함수>

  • string.find("abc") - 문자열 abc가 포함되어 있는지 확인 후 포함되어 있다면 해당 부분의 첫 번째 index를 반환 / 없다면 -1를 반환!

  • string.substr(n,m) - 인덱스 n 부터 m개의 문자를 부분문자열로 반환


참고 링크
https://rebro.kr/53

profile
매 순간 최선을 다하자

0개의 댓글