https://kyu9341.github.io/C-C/2020/01/17/C++getline()/
https://velog.io/@jxlhe46/C-getline-%ED%95%A8%EC%88%98
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 |