[c++] 채팅창 필터링 프로그램 ( find 함수) 본문

객체지향프로그래밍 (C++)

[c++] 채팅창 필터링 프로그램 ( find 함수)

미니모아 2020. 7. 9. 16:14
반응형
void filtering(string s) { 
  string bads[] = { "병신","바보"}; 
  bool flag = false; 
  for (auto bad : bads) {   
  if (s.find(bad) < s.size()) flag = true; 
} 
  if (flag) 
  cout << "########" << endl; 
  else 
  cout << s << endl; 

} 
int main() {  

  while (1) { 
    string chat; 
    getline(cin, chat); 
    if (chat == "끝") break; 
    filtering(chat); 
  }
 }

한글 한글자당 2byte 이기 때문에 문자열 배열 안의 예시는 32bit이다. 

안녕을 입력할 경우 bads의 원소 중에 해당하는 값이 없기 때문에 아래 조건문에서 

  if (s.find(bad) < s.size()) flag = true; 

4294967295 < 4 의 연산을 하고 조건에 만족하지 않기 때문에 입력한 그대로 안녕을 출력한다. 

 

4294967295인 이유 ?

- unsigned int 형이기 때문에 -1를 표현할 수 없고 2의 보수를 취하여 표현한다.  

반응형
Comments