본문 바로가기
Algorithm/Code Module

[C++] 문자열 줄단위로 받기

by BAYABA 2020. 4. 30.

 

<출처: https://makedotworld.tistory.com/29?category=612371>

위 출처 내용을 바탕으로 개인공부 목적으로 작성하였습니다. 


Input

4

2 3 4 5 6 8

2 4 1 2 3

1 1 2 3

1 1 4

 

*첫번째 값은 줄 수 N, 그다음부터 N개의 줄에 랜덤한 갯수의 값들이 들어옵니다.

 

아래 코드에서 중요한 건, for문 진입이전에 나오는 getline 메소드.

cin은 개행문자 전까지 읽고, 처음에 나오는 개행문자는 무시합니다.

getline은 개행문자까지 읽고, 처음에 나오는 개행문자도 읽습니다.

그러므로 cin으로 처음값 N을 읽고 난 후 개행문자를 읽어주는 getline을 한 번 호출해줘야 합니다.

int N;
cin >> N;
string line;

//cin은 개행문자 전까지 읽고 처음에 나오는 개행문자는 무시합니다.
//getline은 개행문자까지 읽고, 처음에 나오는 개행문자도 읽습니다.
//그러므로 cin으로 처음값 N을 읽고 난 후 개행문자를 읽어주는 getline을 한 번 호출해줘야 합니다.
getline(cin, line);

for (int loop = 0; loop < N; ++loop)
{
    //\n이 나올 때 까지 읽기(한 줄 읽기)
    getline(cin, line);
    
    //한 줄을 읽은 뒤 ' '(공백) 기준으로 split
    stringstream ss(line);
    string token;
    
    //' ' 문자가 나올 때까지 읽는다.
    while (getline(ss,token,' '))
    {
        int value = atoi(token.c_str());
        //value에 대한 나머지 후처리...
    }
}

'Algorithm > Code Module' 카테고리의 다른 글

[C++] Code Module  (0) 2020.09.06
[C++] String Split  (0) 2020.01.14