[boj][c++] 1152 단어의개수

ppparkta·2022년 5월 13일
1

Problem solving

목록 보기
1/65
post-thumbnail

1152 단어의 개수


c++에서 공백을 포함한 문자열을 받는 방법을 알게 됐다!

첫 시도에 답이 이상하게 나와서 문제를 찾다가 애초에 input으로 받은 값이 공백 기준으로 잘린다는 것을 확인함. c++에서 공백 포함한 문자열을 받기 위해선 getline 함수를 사용해야 한다.

getline 함수: 문자열을 스페이스가 아닌 엔터 기준으로 받아옴(istream헤더/string헤더)

💡 istream& getline(istream &is, string &str, char delim); //delim은 제한자. 생략 가능

주의할 점. cin 사용 직후 getline함수 사용 시 입력버퍼를 지워줘야 함. cin.ignore() 이거 안 쓰면 cin으로 받은 직후 버퍼에 남은 string이 getline으로 들어감. 사용 전 버퍼 초기화 해주는 것 잊지말기.
피신 하면서 작성한 코드 로컬파일로 들고있다가 오늘 겨우 푸쉬했다. idle에 깃허브 연동해야 된다는 강박이 있어서 git bash 무시하고 있었는데 결국 익숙한 터미널 환경에서 push했다^^... 역시 이게 제일 쉽고 간편함.

틀린 코드

#include	<iostream>
#include	<string>
using namespace std;

int main() {
	string input;
	int cnt = 0;
	int i = 0;

	cin >> input;
	if (input[i] != ' ')
		cnt++;
	i++;
	while (input[i]) {
		if (input[i - 1] == ' ')
			cnt++;
		i++;
	}
	cout << cnt << endl;
	return 0;
}

맞은 코드

#include	<iostream>
#include	<string>
using namespace std;

int main() {
	string input;
	int cnt = 0;
	int i = 0;
	
    cin.ignore();
	getline(cin, input);
	if (input[i] != ' ')
		cnt++;
	i++;
	while (input[i]) {
		if (input[i - 1] == ' ')
			cnt++;
		i++;
	}
	cout << cnt << endl;
	return 0;
}
profile
겉촉속촉

0개의 댓글