: 값 변경 불가
const int kMaxStr = 100; // 전역 상수 소개
bool IsEqual(const char *str1, const char *str2)
{
for (int i =0; i < kMaxStr; i++)
{
// 문자열을 정수로 바꿔서 출력
cout << int(str1[i]) << " " << int(str2[i]) << " " << endl;
// 모든 글자가 동일해야 두 문자열이 동일하다
// 즉, 어느 한 글자라도 다르면 두 문자열은 다르므로 false
if (str1[i] != str2[i])
{
return false;
}
// 문자열 종료 종건
// 문자열을 다 돌때까지 다른글자가 없어서 맨 마지막 null 문자를 만나게 되면 같은 문자열!
if (str1[i] == '\0')
{
return true;
}
}
return true;
}
char 포인터
이다 (주소!)모든 글자가 동일해야 두 문자열이 동일하므로 어느 한 글자라도 다르면 두 문자열은 다르다!
그래서 if (str1[i] != str2[i]) 이면 false
종료 조건은 문자열을 다 돌 때까지 서로 다른 글자가 없어서 맨 끝에 null('\0')문자를 만나게 되면 같은 문자열이다.
그래서 if (str1[i] == '\0') 이면 true
int main()
{
const char str1[kMaxStr] = "stop"; // str1은 이미 결정했음
while (1)
{
char str2[kMaxStr]; // str2만 입력받으면 됨
cin >> str2;
if (IsEqual(str1, str2))
{
cout << "종료합니다" << endl;
break;
}
else
{
cout << "계속합니다" << endl;
}
}
return 0;
}
/*
홍정모 연구소 https://honglab.co.kr/
*/
#include <iostream>
using namespace std;
const int kMaxStr = 100; // 전역 상수 소개
// 문자열을 매개변수로 넣기
// 여기서는 모든 문자열 배열의 길이가 동일하다고 가정
// bool IsEqual(const char str1[], const char str2[])
bool IsEqual(const char *str1, const char *str2)
{
// 크기 출력 확인 (배열 크기가 아님 주의!) - 문자열의 길이를 별도로 저장해야 합니다!
// str1[]와 str2[]는 char 포인터이다 (주소!)
// 그래서 str1[]와 str2[]로는 배열의 크기를 알 수 없다
// cout << sizeof(str1) << " " << sizeof(str2) << " " << endl;
// exit(-1);
// 힌트: ==, != 같지 않다 비교 연산자
// 힌트: 문자열 종료 조건
// 디버깅 힌트: 문자를 정수로 바꿔서 출력해보기
for (int i =0; i < kMaxStr; i++)
{
// 문자열을 정수로 바꿔서 출력
cout << int(str1[i]) << " " << int(str2[i]) << " " << endl;
// 모든 글자가 동일해야 두 문자열이 동일하다
// 즉, 어느 한 글자라도 다르면 두 문자열은 다르므로 false
if (str1[i] != str2[i])
{
return false;
}
// 문자열 종료 종건
// 문자열을 다 돌때까지 다른글자가 없어서 맨 마지막 null 문자를 만나게 되면 같은 문자열!
if (str1[i] == '\0')
{
return true;
}
}
return true;
}
int main()
{
// 영어 사용이 디버깅에 유리합니다.
const char str1[kMaxStr] = "stop";
while (1)
{
char str2[kMaxStr];
cin >> str2;
if (IsEqual(str1, str2))
{
cout << "종료합니다" << endl;
break;
}
else
{
cout << "계속합니다" << endl;
}
}
return 0;
}
출처 : 홍정모 유튜브