본문 바로가기

Programming/C++ 2

[C++] 4장. 복합 데이터형 - (2) 문자열

반응형

2. 문자열

 

  • 배열에 문자열 저장하기
char cat[8]={'f', 'a', 't', 'e', 's', 's', 'a', '\0'};

-> 문자 상수로 초기화 하는 방법, 문자열의 끝에는 \0이 꼭 들어가야 한다.

 

char fish[] = "Bubbles";

-> 문자열 상수로 초기화 하는 방법, 크기와 \0를 컴파일러가 알아서 처리한다. [간단하고 안전한 방법]

 

const int Size = 15;
char name1[Size];
char name2[Szie] = "C++owboy";

cout << strlen(name1);
cout << sizeof(name1);

name2[3] = '\0';
cout<<name2<<endl;

cout << strlen(name1); -> 배열에 저장된 문자열의 크기 8[눈에 보이는 문자만]
cout << sizeof(name1); -> 사용하고 있는 메모리의 크기 15[여기선 int Size = 15; 를 말한다]

name2[3] = '\0'; -> 중간에 널문자 삽입시 뒤 배열은 무시한다.
cout<<name2<<endl; -> C++ 출력

 

 

  • cin의 단점
    • 빈칸 / 탭 / 캐리지 리턴 등 스페이스 공간이 있으면 끝난 것으로 간주한다 
    • 따라서 행 단위의 문자열 입력이 불가능하다
  • 행 단위 문자열 입력
    • getline()
      • 개행 문자를 읽어서 폐기한다.
    • get()
      • 입력 큐에 개행문자를 남겨둔다.
  • getline()
cin.getline(name, ArSize);

cin.getline(dessert, ArSize);

-> getline(저장할 배열의 이름, 문자의 개수), enter키로 \n를 대체한다.

 

  • get()
cin.get(name, ArSize).get();
cin.get(dessert, ArSize).get();

-> get() & get()으로 여러 단어를 읽는다.

 

  • 행 단위 입력 방법
//1
cin.getline(name, ArSize);
cin.getline(dessert, ArSize);
//2
cin.get(name,ArSize).get();
cin.get(dessert,ArSize).get();
//3
cin.get(name,ArSize);
cin.get();
cin.get(dessert,ArSize);

-> 셋 다 같은 기능을 수행한다.

 

  • 문자열과 수치의 혼합 입력
//1
cin >> year;
cin.get();
//2
(cin >> year).get();

 

반응형