Skils/C++

[C++] 공백을 포함한 문자열 처리[getline(),cin.getline(),gets_s(),stringstream]

재한 2022. 6. 28. 09:39

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

📗getline 이용

#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
    string s;
    getline(cin, s);
    cout << s;
}

getline을 쓰면 알아서 공백을 포함하여 문자열을 입력받는다.

 

📗cin.getline()을 이용

#include <iostream>
#include <string>
using namespace std;
int main(){
    char s[100];
    cin.getline(s,100,'\n');
    cout<<s;
}

cin.getline(char배열 이름, 배열 size, 구분 문자)

getline과 다른 점은 엔터 말고 특정 구분 문자로 입력을 종료시킬 수 있다.

 

📗 get_s()를 이용

#include <iostream>
#include <string>
using namespace std;
int main(){
    char s[100];
    gets_s(s,sizeof(s));
    cout<<s;
}

get_s(char배열 이름, 배열 크기)

 

📕공백으로 문자열 자르기

#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main(){
    string s = "abc def ghi";
    stringstream ss(s);
    ss.str(s);

    string word;
    while(ss>>word){
        cout<<word;
    }
}
/*출력 내용
abc
def
ghi
*/
  • stringstream은 주어진 문자열에서 필요한 정보를 빼낼 때 유용하게 사용된다.
  • 헤더 <sstream>이 필요하다.
  • while(ss> word) : 더 이상 word에 해당하는 자료형(string)에 맞는 정보가 없을 때까지 스트림에서 word로 자료를 복사한다.
  • 끝에 도달하면 끝난다.
  • 중간에 word와 같지 않은 자료형이 나오면 복사하지 않고 종료
  • stringstream의 값은 변하지 않음.
  • stringstream을 재사용하기 위해서는 clear() 함수를 사용해야 한다.