#2 [C++] 배열, 문자열, 사용자 입력, string

김보민·2023년 2월 27일
0

C++

목록 보기
2/5

배열

C++는 복합데이터형을 제공한다.
사용자 정의대로 새로운 데이터형을 만들 수 있다.
복합데이터형 : 기본 정수형과 부동소수점형의 조합

  • 배열(array) : 같은 데이터형의 집합 (복합데이터형 중 하나)

typeName arrayName[arraySize];


short month[12];  // 배열 선언
// short형을 가진 자료를 12개 저장할 수 있는 배열

short month[12] = { 1, 2, 3 };  // 배열 초기화
cout << month[0] << endl; //1이 출력됨
cout << month[1] << endl; // 2가 출력됨
cout << month[3] << endl; // 0이 출력됨

[0]을 인덱스(index)라고 함

  • 배열 원소에 대입할 값들을 콤마로 구분하여 중괄호{ }로 묶어 선언한다.
    ex) int x[] = { 11, 22, 33 };
  • 초기화를 선언 이후 나중에 할 수는 없다.
  • 배열을 다른 배열에 통째로 대입할 수 없다.
    ex) short month[5] = { ... };
          short year[12] = { ... };
          year = month;  //이런 거 안됨!
  • 초기화 값의 개수를 배열 원소의 갯수보다 모자라게 제공할 수 있다.
    ex) short month[12] = { 1, 2, 3 };
  • 배열을 부분적으로 초기화하면, 나머지 원소들은 자동으로 모두 0으로 설정된다.
    • 즉, 명시적으로 첫번째 원소만 0으로 초기화하면, 나머지 원소들은 모두 0으로 초기화된다.
      ex) short month[12] = { 1, 2, 3 };
           cout << month[3] << endl;   // 0이 출력됨
  • 배열을 초기화할 때 대괄호[ ] 속을 비워두면 컴파일러가 초기화 값의 갯수를 헤아려 배열 원소 갯수를 저장한다.
    ex) short month[] = { 1, 2, 3 };   // 자동으로 3이라는 array size가 들어감



문자열

: 문자의 열
배열을 이용하여 문자열을 사용할 수 있음

// 방법 1
char a[6] = { 'H','e','l','l','o' }; // null문자('\0')가 포함되어야 해서 [6]으로 써줘야함
cout << a << endl; // Hello 출력

// 방법 2
char a[] = "Hello"; // 큰 따옴표("")는 null문자를 포함한다.
cout << a << endl; // Hello 출력



사용자 입력

#include <iostream>
#include <cstring> // cstring 헤더파일에 strlen()함수가 정의 되어있음

using namespace std;

int main() {
    //사용자 입력
    const int SIZE = 15; // 상수
    char name1[SIZE];
    char name2[SIZE] = "C++programing";

    cout << "안녕하세요! 저는 " << name2;
    cout << "입니다! 성함이 어떻게 되시나요?\n";
    cin >> name1; // 꺽쇠(>>) 주의!
    // cin.get(name1, SIZE);
    cout << "음, " << name1 << "씨, 당신의 이름은 ";
    cout << strlen(name1) << "자입니다만\n";
    cout << sizeof(name1) << "바이트 크기의 배열에 저장되었습니다. \n";
    cout << "이름이 " << name1[0] << "자로 시작하는군요.\n";
    name2[3] = '\0';
    // 처음 세 문자인 C++를 출력하기 위해서 4번째 문자에 null문자를 넣어줌
    // cout은 문자열을 출력할 때 null문자까지만 출력을 한다.
    cout << "제 이름의 처음 세 문자는 다음과 같습니다: ";
    cout << name2 << endl;
    
    return 0;


    // [결과]
    //안녕하세요!저는 C++programing입니다!성함이 어떻게 되시나요 ?
    //Bomin
    //음, Bomin씨, 당신의 이름은 5자입니다만
    //15바이트 크기의 배열에 저장되었습니다.
    //이름이 B자로 시작하는군요.
    //제 이름의 처음 세 문자는 다음과 같습니다 : C++
}

strlen() : 문자열의 길이를 반환하는 함수
                ( cstring이라는 헤더파일에 정의 되어있음 )
cin : 사용자가 입력한 것을 오른쪽의 변수에 저장하는 함수
         입력받은 값에 공백(화이트 스페이스)이 있으면 공백 앞부분까지만 출력한다.
get, getline : 공백을 포함해서 사용자의 입력을 받을 수 있는 방법
                      (get과 getline은 동일한 방식으로 동작함)
sizeof() : 변수의 byte에 크기를 반환하는 함수

cout에는 <<
cin은 >>



string

  • C++에서 문자열을 다루는 방법 중 하나인 string
  • C스타일로 string 객체를 초기화할 수 있다.
  • cin을 사용하여 string 객체에 키보드 입력을 저장할 수 있다.
  • cout을 사용하여 string 객체를 디스플레이 할 수 있다.
  • 배열 표기를 사용하여 string 객체에 저장되어 있는 개별적인 문자들에 접근할 수 있다.

배열을 다른 배열에 통째로 대입할 수 없다.
그러나 string에서는 가능함

 	char char1[20];
    char char2[20] = "jaguar";
    string str1;
    string str2 = "panda";
    //char1 = char2; //불가능
    str1 = str2; //가능
    
    cout << str1 << endl; //panda 출력
    cout << str1[0] << endl; //p 출력
    // 배열처럼 인덱스를 통해서 개별적인 문자에 접근할 수 있다.
  • char형 배열과의 가장 큰 차이점
    : 배열 사이즈를 지정해주지 않아도 되고, 통째로 값을 대입할 수 있음

0개의 댓글