관리 메뉴

공부 기록장 💻

[C++] 문자열 입력 - <cstring> cin.getline, <string> - getline 본문

# Language & Tools/C++

[C++] 문자열 입력 - <cstring> cin.getline, <string> - getline

dream_for 2021. 4. 6. 02:22

(명품 C++ 프로그래밍 ch 2.4)

 

 

 

C++ 에서 문자열을 표현하는 방법에는 두 가지가 있다: C-스트링 / string 클래스

 

1. C-스트링

 

- NULL(0, '\0') 문자로 끝나는 char 배열

- #include <cstring>

- #include <string.h>

- C언어에서 사용하는 문자열 방식. C언어와의 호환성 때문에 그대로 사용하는 방법

 

 

- cin >> 연산자 이용 시 주의점 : 공백 문자를 만나면 이전 문자열만 하나의 문자열로 인식

- cin 객체의 getline() 멤버 함수 이용하여 공백이포함된 문자열 입력 받기

 

cin.getline(char buf[], int size, char delimitChar)

- buf: 키보드로부터 읽은 문자열을 저장할 배열 이름
- size: buf[] 배열의 크기
- delimitChar: 문자열 입력 끝을 지정하는 구분 문자


최대 (size-1)개의 문자를 입력 받을 수 있다. 
delimitChar로 지정된 문자를 만나면 문자열의 입력이 종료됨.(delimitChar로 지정된 문자는 저장되지 ㅇ낳는다.)
buf[] 배열의 마지막에는 NULL 문자가 덧붙여짐.

 

char address[100];
cin.getline(address, 100, '\n'); // <Enter> 키가 입력될때까지 최대 99개의 문자 입력 받을 수 있다.

// 마지막 매개변수 delimitChar의 디폴트값이 개행문자 이므로, 다음과 같이 간소화 가능
// cin.getline(address, 100);

 

 

 

2. string 클래스

 

- C++ 표준 라이브러리에서 제공하는 클래스

- #include <string>

- 문자열을 객체로 다루어, string 클래스 내에 구현되어 있는 다양한 멤버 함수들을 이용해 문자열을 다룰 수 있다.

 

- 문자열의 크기에 제약이 없다.

- 문자열 복사, 비교, 수정 등 다양한 문자열 연산을 위한 멤버 함수와 연산자를 제공

 

 

- getline(istream&, string&, delimitChar); : string 타입의 문자열을 입력받기 위해 C++ 표준 라이브러리에서 지원하는 전역 함수

- <enter>키가 입력될 때 까지 cin 버퍼 스트림에 스트링 객체가 저장된다.

- delimitChar 앞의 문자열을 string& 스트링 참조 매개 변수 객체에 저장한다.

 

// 문자열 선언과 초기화
string song("Falling in love with you");

// 문자열 변수 선언
string singer

// 사용자로부터 문자열 입력 받기
getline(cin, singer);

 

 

 

string 클래스 문자열 사용 

 

728x90
반응형
Comments