백준

백준 1152 C++

슬뷔 2024. 7. 24. 19:23

https://kyu9341.github.io/C-C/2020/01/17/C++getline()/

 

C++ 입력 함수 - cin, cin.get(), getline() - kwon | kwon's Blog

cin 에 포함되어 있다. 표준 입력 버퍼에서 개행 문자를 제외한 값을 가져온다. 공백이나 개행 입력 시 공백 이전까지의 값만 결과로 받아들인다. 개행 문자를 입력 버퍼에 남겨둔다. 1234567int n;cin

kyu9341.github.io

https://velog.io/@jxlhe46/C-getline-%ED%95%A8%EC%88%98

 

[C++] cin, getline 함수로 입력 받기

공백을 포함한 문자열 입력 받기

velog.io

 

string 라이브러리의 getline()

  • 최대 문자 수를 입력하지 않아도 됨
  • 원하는 구분자(delimiter)를 만날 때 까지 모든 문자열을 입력 받아 하나의 string 객체에 저장
  • getline(입력스트림 오브젝트, 문자열을 저장할 string객체, 종결 문자);
    ex) getline(cin, str);
getline(istream& is, string str);
getline(istream& is, string str, char dlim);

 

sstream 라이브러리의 istringstream

  • 문자열 포맷을 parsing 할 때 사용한다.
  • 문자열에서 필요한 값을 추출하고 공백과 '\n'을 무시
#include <iostream>
#include <sstream>
#include <string>

using namespace std;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	string input;
	// 전체 줄 입력 (공백을 포함한 전체 문자열)
	getline(cin, input);

	istringstream iss(input);
	string word;
	int count = 0;

	// >> 연산자 : 스트림에서 공백을 기준으로 단어를 읽어옴
	// iss >> word : 스트림 iss 에서 단어를 추출하여 word 변수에 저장
	// 스트림에서 더 이상 읽을 단어가 없을 때까지 반복
	while (iss >> word)
	{
		count++;
	}

	cout << count << "\n";

	return 0;
}
#include <iostream>
#include <string>

using namespace std;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	string input;

	getline(cin, input);

	int count = 0;
	bool inWord = false;

	// 문자열 input 순회
	for (char c : input)
	{
		// 공백 문자를 만나면
		if (c == ' ')
		{
			// inWord true 일 때 (현재 문자가 단어의 일부일 때)
			if (inWord)
			{
				// 공백을 만나면 카운트 증가, inWord false 설정
				count++;
				inWord = false;
			}
		}

		else
		{
			// 문자가 공백이 아닐 때는 단어의 일부임을 나타냄
			inWord = true;
		}
	}

	// 문자열이 공백없이 끝나는 경우
	if (inWord)
	{
		count++;
	}

	cout << count << "\n";

	return 0;
}

'백준' 카테고리의 다른 글

백준 2908 C++  (1) 2024.07.24
백준 2675 C++  (1) 2024.07.24
백준 10809 C++  (0) 2024.07.24
백준 11720 C++  (2) 2024.07.23
백준 11654 C++  (0) 2024.07.23