1. C++ 기본

2018. 11. 14. 22:07 from CS/C++

기본은 쉬운것이 아니라 중요한 것이다.


내가 생각하는 잊으면 안되는 중요한 것들을 위주로 정리를 해 보았다.




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>키를 눌러야 비로소 >> 연산자가 작동한다.


Posted by Jyoel :