관리 메뉴

Storage Gonie

(4) C++ 한 줄 입력받기 본문

알고리즘/문제해결을 위한 C++ 공부

(4) C++ 한 줄 입력받기

Storage Gonie 2019. 4. 19. 00:17
반응형

# 띄어쓰기로 구분된 입력 각각을 저장하는 법(줄 바꿈 문자를 제외하고 입력받음)

- scanf()

- cin cin을 연속적으로 호출하면 입력받은 한 줄에서 공백을 구분자로 하여 다음 것을 계속해서 가져올 수 있다.

#include <iostream>

using namespace std;

int main(void)
{
    char s1[15];
    char s2[15];
    
    scanf("%s %s", s1, s2);
    cout << s1 << endl;
    cout << s2 << endl;
    
    cin >> s1 >> s2;
    cout << s1 << endl;
    cout << s2 << endl;    
}

 

# 띄어쓰기를 포함하여 통째로 입력을 저장하는 방법1(줄 바꿈 문자를 포함하여 입력받음)

- scanf() 의 [^\n]\n 이용 (scanf는 앞뒤 공백을 무시하므로 한줄 전체를 그대로 받는 데에는 적절치 못하다.)

- cin.getline()

- fgets()

#include <iostream>

using namespace std;

int main(void)
{
    char s[15];
    
    scanf("%[^\n]\n", s); // \n으로 끝나는 문자열에서 줄 바꿈 문자를 제거한 문자만 입력받음
    cout << s;
    
    cin.getline(s, 20);   // 줄 바꿈 문자까지 포함하여 20자를 입력받음
    cout << s;
    
    fgets(s, 20, stdin);  // 줄 바꿈 문자까지 포함하여 20자를 입력받음
    cout << s;
}

 

# 띄어쓰기를 포함하여 통째로 입력을 저장하는 방법2(줄 바꿈 문자를 제외하고 입력받음)

* 어떤 데이터형(int or char)과 string형을 연달아 입력받을 때 getline 버퍼에 입력된 줄바꿈 문자를 받아들여 버리는데
  이를 막기위해서 
사이에 getchar()를 삽입해줄 수 있다.

- scanf() (scanf는 앞뒤 공백을 무시하므로 한줄 전체를 그대로 받는 데에는 적절치 못하다.)

- getline() string을 사용할 수 있어서 가장편리함

char s[15];
    
scanf("%[^\n]\n", s); // 줄 바꿈 문자를 제거한 문자만 입력받음
cout << s;
string str;
    
getline(cin, str);  // getline(cin, str, '\n')과 같음 
cout << str;

 

반응형
Comments