c++ 문자열
c++의 문자열 표현 방식 은 '2'가지
- C 스트링 방식 - '\0'로 끝나는 문자 배열
char name1[6]={'G','r','a','c','e','\0'}; //name1은 문자열 "Grace"
char name2[5]={'G','r','a','c','e'}; //name2는 문자열이 아니고 단순 문자 배열
2.string 클래스 이용
- 헤더 파일에 선언됨
- 다양한 멤버 함수 제공, 문자열 비교, 복사, 수정 등
c 스트링 방식으로 문자열 다루기
c 스트링으로 문자열 다루기
- c 언어에서 사용한 함수 사용 가능: strcmp(), strlen(), strcpy() 등
- 이나 <string.h> 헤더 파일 include
#include <cstring> //또는
#include <string.h>
...
int n = strlen("hello");
- <cstring> 헤더 파일을 사용하는 것이 바람직함 : 이 c++ 표준 방식이기 때문
cin을 이용한 c스타일의 문자열 입력
char name[6]; //5개의 문자를 저장할 수 있는 char 배열
cin>>name; //키보드로부터 문자열을 읽어 name 배열에 저장한다.
만약 Grace 를 입력했다면 name 배열에는 name[0]='G', name[1]='r', name[2]='a', name[3]='c', name[4]='e', name[5]='\0' 이 저장된다.
예제를 보자 아래는 한글문자를 입력받는 예제이다.
#include <iostream>
using namespace std;
int main(){
cout<<"이름을 입력하세요>>";
char name[11]; //한글은 글자당 2byte이기 때문에 5개 글자, 영문은 10개까지 저장할 수 있다.
cin>>name; //키보드로부터 문자열을 읽는다.
cout<<"이름은 "<<name<<"입니다."<<'\n'; //이름을 출력한다.
}
그렇다면 공백이 포함된 문자열을 입력받는 방법은 무엇일까?
cin.getline()으로 공백이 낀 문자열을 입력받기
cin.getline(char buf[],int size,char delimitChar)
- buf에 최대 size-1개의 문자 입력. 끝에 '\0' 붙임.
- deliminateChar를 만나면 입력 중단. 끝에 '\0' 붙임.: deliminateChar의 default 값은 '\n' (Enter키)
예제
#include <iostream>
using namespace std;
int main(){
cout<<"주소를 입력하세요>>";
char address[100];
cin.getline(address,100,'\n'); //키보드로부터 주소 읽기
cout<<"주소는"<<address<<"입니다."<<'\n'; //입력받은 주소 출력
}
c++의 string 클래스를 이용한 문자열을 다루기
string 클래스
- c++ 에서 강력 추천
- c++ 표준 클래스
- 문자열의 크기에 따른 제약 없음: string 클래스가 스스로 문자열 크기에 맞게 내부 버퍼를 조절
- 문자열 복사, 비교, 수정 등을 위한 다양한 함수와 연산자 제공
- 객체 지향적
- c-스트링보다 다루기 쉬움
아래 예제를 통해 한번에 정리한다.
'ETC' 카테고리의 다른 글
[git] 레포지토리(폴더) 이름 수정하기 (0) | 2021.10.20 |
---|---|
[ios] 에뮬레이터 위치 정보 설정하기 (0) | 2021.10.19 |
[c++] inline 함수 (0) | 2021.10.18 |
[c++] cin의 개념 (0) | 2021.10.18 |
[c++] namespace 개념 (0) | 2021.10.18 |
[c++] c++의 특징 (0) | 2021.10.18 |
댓글