기본은 쉬운것이 아니라 중요한 것이다.
내가 생각하는 잊으면 안되는 중요한 것들을 위주로 정리를 해 보았다.
1. C-string
C-string이란 널 문자로 끝나는 char형 배열이다.
C++에서는 C언어와의 호환성을 위해 그대로 사용한다.
널 문자('\0' or 0)가 있고 없고의 차이.
char name1[5] = {'N', 'a', 'm', 'e', '\0'}; //name1은 문자열 "Name"이다.
char name2[4] = {'N', 'a', 'm', 'e'}; //name2는 문자열이 아니다. 단순한 문자 배열이다.
문자열 리터럴을 직접 배열에 저장의 경우.
char name3[] = "Name"; //name3의 배열의 크기는 5로 자동 설정
이때 마지막에 널 문자가 포함되므로 배열의 크기는 4가 아닌 5가 된다.
cin을 통해 입력을 받는 경우도 살펴보자.
char name4[7];
cin >> name;
키보드 입력: Name
'N' |
'a' |
'm' |
'e' |
'\0' |
'\0' |
'\0' |
배열 name4에 다음과 같이 저장 된다.
남은 배열 공간은 널 문자로 초기화 된다.
결론: 마지막 널문자를 추가하기 위해 배열의 크기는 문자수보다 최소한 1은 커야한다.
그런데!!!
굳이 C++에서 char형 배열 쓸 필요가 있을까?
나는 string변수를 쓴다...ㅎ
이번엔 string type을 사용하여
getline 으로 한줄 입력을 받아 보자.
#include <iostream>
#include <string> //string을 쓰기 위한 라이브러리 추가.
using namespace std;
int main(void){
string s; // string 타입 변수 s 선언
getline(cin, s); // getline으로 한줄 입력 받기.
cout << "s.size() : " << s.size() << endl;
cout << "s : " << s <<endl;
return 0;
}
위의 코드에서 "I love you."를 입력해 보았다.
string타입 변수 s의 크기와 제대로 입력이 되었는지 확인해 보았더니 크기는 띄어쓰기를 포함한 11이 되었고, 잘 입력이 되었다.
2. #include <헤더파일>과 #include "헤더파일"의 차이
#include <헤더파일> : 컴파일러가 설치된 폴더에서 '헤더 파일'을 찾으라는 지시이다.
#include "헤더파일" : 개발자의 프로젝트 폴더나 개발자가 컴파일 옵션으로 지정한 include 폴더에서 '헤더 파일'을 찾도록 지시한다.
3. cin 객체
cin은 키보드와 C++ 응용프로그램을 연결하는 C++ 표준 입력 스트림 객체이다. 키보드로 입력되는 값들은 모두 cin 객체의 스트림 버퍼로 들어오며, 응용 프로그램은 cin 객체로부터 입력된 값을 읽는다.
<Enter>키를 입력하기 전까지는 사용자의 키 입력이 완료된 상태가 아니다.
그래서 <Backspace>키를 눌러 입력된 상태를 수정할 수 있다.
<Enter>키를 눌러야 비로소 >> 연산자가 작동한다.
'CS > C++' 카테고리의 다른 글
6. C++ 객체와 객체 배열의 동적 생성 및 반환, this포인터, string 클래스를 이용한 문자열 사용 (0) | 2019.02.11 |
---|---|
5. C++ 객체 포인터, 객체 배열, 동적메모리 할당 및 반환 (0) | 2019.02.11 |
4. C++ 접근지정, C++ 인라인 함수, C++ 구조체, C++바람직한 코딩 (0) | 2018.11.19 |
3. C++ 클래스(Class), 생성자(Constructor), 소멸자(Destructor) (0) | 2018.11.14 |
2. C++ 객체란? (0) | 2018.11.14 |