728x90
반응형
알고리즘 문제를 풀다보면 띄어쓰기 문자열을 입력받는 경우가 많다. int형은 익숙한데 문자열을 다루는 것에 익숙하지 않아 이참에 정리하고자 한다.
문자열 입력받는 방법(공백 없음)
- char 와 scanf 이용해서 입력받기
#include <iostream>
#include <stdio.h>
using namespace std;
int main() {
cout << "무슨 요일 인가요? : ";
char day[11];
scanf("%s",day);
cout << "오늘은 " << day << "입니다"<< endl;
return 0;
}
- char 와 cin 이용해서 입력받기
#include <iostream>
#include <stdio.h>
using namespace std;
int main() {
cout << "무슨 요일 인가요? : ";
char day[11];
cin >> day;
cout << "오늘은 " << day << "입니다"<< endl;
return 0;
}
- string과 cin으로 입력 받기
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
int main() {
cout << "무슨 요일 인가요? : ";
string day;
cin >> day;
cout << "오늘은 " << day << "입니다"<< endl;
return 0;
}
반응형
위와같은 방법은 공백없이 입력받을 때 사용하고 공백이 있다면 공백 전까지만 입력을 받게 되는 문제점이 있다.
따라서 어떻게 하면 공백을 포함해 입력을 받을 수 있는지 작성하려고 한다.
문자열 입력받는 방법(공백 포함)
1. cin.getline 로 입력받기 (char 사용)
cin.getline 형태
cin.getline(char buf[], int size, char delimitChar)
cin.getline 예제
#include <iostream>
#include <stdio.h>
using namespace std;
int main() {
cout << "어떤 스포츠를 좋아하나요?? : ";
char sports[100];
cin.getline(sports, 100, '\n');
cout << "당신은 " << sports << "를 좋아합니다."<< endl;
return 0;
}
2. getline() 으로 입력받기 (string 사용)
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
int main() {
cout << "어떤 스포츠를 좋아하나요?? : ";
string sports;
getline(cin, sports);
cout << "당신은 " << sports << "를 좋아합니다."<< endl;
return 0;
}
이중으로 입력받기 ( cin.ignore() 사용)
공백이 없는 것과 공백을 같이 입력 받기 위해서는 다음과 같이 사용한다.
cin.ignore는 첫 번째 인자로 읽어들일 문자의 개수, 두 번째로 읽어들이면 종료할 문자이다. 입력버퍼에 있는 문자를 최대 첫 번째 인자로 지정한 수만큼 읽어들여 버리고, 그리고 두 번째 인자로 지정한 문자를 읽어들이면 그 문자를 마지막으로 읽어들여 버리고 함수가 종료된다.
#include <iostream>
using namespace std;
int main() {
char coffee[11];
cout << "어떤 커피를 좋아하시나요? : ";
cin >> coffee;
cin.ignore(100, '\n');
cout << "당신은 " << coffee << "을 좋아합니다."<<endl;
cout << "어떤 스포츠를 좋아하나요?? : ";
char sports[100];
cin.getline(sports, 100, '\n');
cout << "당신은 " << sports << "를 좋아합니다."<< endl;
return 0;
}
cin.ignore(100, '\n') 을 해주는 이유는, 버퍼를 지우기 위해서이다.
728x90
반응형
'Algorithm' 카테고리의 다른 글
비트코인 채굴의 이해: 작업 증명 알고리즘의 원리와 과정 (0) | 2024.06.26 |
---|---|
[Algorithm] C++ 대문자를 소문자로 바꾸기(feat. transform() 사용하기) (0) | 2022.01.28 |
[Algorithm] priority_queue 비교연산자 구현 (feat. struct compare, 외우기 쉬운 방법) (0) | 2022.01.21 |
[LeetCode 142] 142. Linked List Cycle II(feat. 플로이드의 순환찾기 알고리즘) (0) | 2022.01.20 |
[C++] string::to_string 사용하기(feat. int, double, float -> stirng 변환) (0) | 2022.01.02 |