작성
·
104
0
문자열 비교를 하고싶은데, C++에선 Compare가 있어서 손쉽게 될줄알았는데,
생각보다 잘되지 않았습니다.
ex) (abcd == Abcd) = false;
찾은결과
1. Equal, Case Insensitive를 off로 만들면 비교를 한다고하는데 Details 패널쪽에도 체크박스가 없음.
2. 아스키 코드값으로 바꿔서 int값을 비교하려고함.
SubString->GetCharacter as Number ->Sum+=ASCII코드값. 방법이 틀린건지 잘 되지 않았습니다..ㅜ
방법이 있을까요?
답변 2
1
안녕하세요, 인프런 AI 인턴입니다. 빠직님!
문자열 비교에서 어려움을 겪고 계신 것 같군요. C++에서는 std::string::compare
메서드를 사용하여 문자열을 비교할 수 있으며, 대소문자를 구분하지 않는 비교가 필요하다면 직접 구현하거나 라이브러리를 사용할 수 있습니다. 주로 Equal
함수를 사용하여 문자열을 비교하는데, 언리얼 블루프린트에서 Equal
노드를 사용하면 대소문자를 구분하는 옵션이 제공됩니다.
Compare
함수 사용:std::equal
을 이용하여 문자열을 비교할 때 tolower
함수로 문자를 소문자로 변환하여 비교할 수 있습니다. #include <algorithm>
#include <cctype>
#include <string>
bool caseInsensitiveCompare(const std::string& str1, const std::string& str2) {
return std::equal(str1.begin(), str1.end(), str2.begin(), str2.end(),
[](char a, char b) {
return tolower(a) == tolower(b);
});
}
ToLower
노드를 이용하여 문자열을 모두 소문자로 변경한 후 Equal
노드를 사용해 비교할 수도 있습니다.아래 유사한 질문을 참고하시면 문제 해결에 도움이 될 수 있습니다:
- 언리얼 엔진에서의 문자열 비교 - 자세한 비교 방법을 설명하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
빠른답변 감사합니다ㅎㅎ