[C++ 언어-기초실습-8] 일치하는 단어 찾기?

Words
225
Reading
1 min
7y
Listen to this post
~2 min

[C++ 언어-기초실습-8] 일치하는 단어 찾기?



오늘은 문자열을 비교하여 일치하는 단어를 찾아보는 실습을 합시다.

1. 부분 문자열 쪼개기


문장을 각 단어로 쪼개는 방법에 대해서는 예전 문자열 관련 post에서 이야기를 한적이 있습니다.

#include 

stringstream sstr1("문장");
string str_buf; 

sstr1>>str_buf;

이렇게 stringstream 클래스 객체를 이용하여 각 단어(문자열)을 str_buf 문자열 변수에 저장하게 됩니다.

계속 문장의 단어가 끝날 때까지 단어를 추출하기 위해서 다음과 같이 while문을 이용하면 좋습니다.

while(sstr1>>str_buf){
        str_buf 처리;
}

이러면 단어를 추출하여 str_buf 문자열 변수에 저장하는데 마지막 단어(문자열)를 추출할 때까지 계속 읽어오게 됩니다.

2. 단어 비교(부분 문자열 비교)


다음으로는 각 단어를 읽어 왔다면 원하는 단어와 일치하는지를 비교해 보아야 합니다. compare() 함수를 이용하여 단어 비교를 해보았네요.

string str_buf="aaa";
str_buf.compare("aaa");

이렇게 하면 compare()함수는 일치하면 '0'을 반환하고 일치하지 않으면 '1'을 반환하게 됩니다. 위 결과는 두 문자열이 일치하기 때문에 반환값은 '0'을 반환 됩니다.

이제 단어를 쪼개고 그 단어를 원하는 단어와 비교를 하는 원리를 배웠습니다. 그럼 실제로 코딩해서 결과가 제대로 나오는지 살펴 볼까요.

3. 코딩


  • 조건 : 아무 문장을 작성하고 "aaa"라는 단어가 있는지 비교하시오!

[전체소스]

#include 
#include 
#include 

using namespace std;

int main(int argc, char** argv) {
    
    string str="aaa bbb ccc";    
    string str_buf; 
    
    stringstream sstr1(str);
    int state;
    
    while(sstr1>>str_buf){
        cout<<str_buf<<endl;
        cout<<str_buf.compare("aaa")<<endl;
    }  
    return 0;
}

[결과]
a1.jpg

결과를 보면 aaa라는 단어를 비교 할 때에는 '0'이 반완되고 다른 단어에 경우는 전부 '1'이 반환 되었네요.

마무리


오늘은 두가지 원리를 이용하여 특정 문장을 가지고 거기에 들어있는 특정 단어를 비교해 보는 실험을 해 보았습니다. 간단한 예를 들기 위해서 문장을 단순하게 일련 알파벳으로 했는데 정상적 문장에서도 아무 문제 없이 사용 할 수 있음으로 이 원리를 이용하면 재밌는 다양한 실험을 할 수 있을 거에요.


Sponsored ( Powered by dclick )

dclick-imagead