본문 바로가기
SWE/코테

c++ 한 글자씩 입력 받는 방법 iostream

by S나라라2 2021. 3. 7.
반응형
  • 입력 받는 방법 cin()

아래와 같이 cin을 사용하면 공백(' ')과 엔터('\n')가 나오면 입력 종료로 간주한다.

cin 을 이용하면 문자와 문자열 모두 입력 받을 수 있다.

#include <iostream>

int main()
{
	int H, W;
    cin >> H >> W;
    
    char array[MAX][MAX]={0,};
    for(int r=0; r<H; ++r)
    {
    	for(int c=0; c<W; ++c)
        {
        	cin >> array[r][c];
        }
    }
    
	return;
}
//입력 예시
3 4
# . . #
# . . #
# # # #

각 문자마다 공백을 넣어줘야만 array[][]에  각각 따로 들어간다.

 

 

  • 한 글자(char)씩 입력 받는 방법

개행 문자를 입력 큐에 넣어둔다. 따라서 한 글자씩 읽어올 수 있다. 

문자만 입력 받을 수 있다.

#include <iostream>

int main()
{
	int H, W;
    cin >> H >> W;
    
    char array[MAX][MAX]={0,};
    for(int r=0; r<H; ++r)
    {
    	for(int c=0; c<W; ++c)
        {
        	char ch = cin.get();
            if( ch == '\n' ) // 개행 문자('\n')가 저장되어 있는 경우, 다음 문자를 읽어온다.
            {
            	ch = cin.get();
            }
        	array[r][c] = cin.get();
        }
    }
    
	return;
}
//입력 예시
3 4
#..#
#..#
####

 

 

* 위에서 개행문자를 확인하지 않을 경우 ?

위의 코드에서 개행 문자 예외처리를 주석하고 입력받는다면 아래와 같이 저장된다.

#include <iostream>

int main()
{
	int H, W;
    cin >> H >> W;
    
    char array[MAX][MAX]={0,};
    for(int r=0; r<H; ++r)
    {
    	for(int c=0; c<W; ++c)
        {
        	char ch = cin.get();
            //if( ch == '\n' ) // 개행 문자('\n')가 저장되어 있는 경우, 다음 문자를 읽어온다.
            //{
            //	ch = cin.get();
            //}
        	array[r][c] = cin.get();
        }
    }
    
	return;
}
//입력 예시
3 4
#..#
#..#
####

개행문자를 따로 처리해주지 않을 경우, array에 개행문자도 들어가게 된다. 

array는 아래처럼 저장하게 된다.

// array
#..#
\n#..
#\n##
반응형