c++ 문자열 함수
아두이노에서 문자열(String) 비교를 수행하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 `String` 클래스에 내장된 `==` 연산자를 사용하는 것입니다. 또한 `equals()` 메서드나 C 스타일 문자열을 위한 `strcmp()` 함수도 사용할 수 있습니다.
### `String` 객체 사용하기
아두이노의 `String` 클래스는 `==` 연산자를 오버로드하여 문자열 비교를 쉽게 수행할 수 있게 합니다.
```cpp
String str1 = "Hello";
String str2 = "World";
String str3 = "Hello";
if (str1 == str3) {
// str1과 str3는 같습니다.
}
if (str1 != str2) {
// str1과 str2는 다릅니다.
}
```
`equals()` 메서드를 사용하는 방법도 있습니다. 이 메서드는 두 `String` 객체가 같은지 비교하고, 결과를 불리언 값으로 반환합니다.
```cpp
if (str1.equals(str3)) {
// str1과 str3는 같습니다.
}
```
### C 스타일 문자열 비교하기
C 스타일 문자열(즉, `char` 배열)의 경우 `strcmp()` 함수를 사용할 수 있습니다. 이 함수는 두 문자열이 같으면 0을 반환합니다.
```cpp
char charStr1[] = "Hello";
char charStr2[] = "World";
char charStr3[] = "Hello";
if (strcmp(charStr1, charStr3) == 0) {
// charStr1과 charStr3는 같습니다.
}
if (strcmp(charStr1, charStr2) != 0) {
// charStr1과 charStr2는 다릅니다.
}
```
`strcmp()` 함수는 문자열이 정확히 같은 경우 0을 반환하며, 다를 경우에는 0이 아닌 값을 반환합니다.
### 결론
`String` 객체를 사용하는 경우 `==` 연산자나 `equals()` 메서드가 가장 편리하고 직관적인 방법입니다. C 스타일 문자열을 다루는 경우에는 `strcmp()` 함수를 사용해야 합니다. 문자열 비교 시 대소문자를 구분하지 않으려면 `String` 클래스의 `equalsIgnoreCase()` 메서드나 C 스타일 문자열을 위한 `strcasecmp()` 함수를 사용할 수 있습니다.
아두이노의 `String` 클래스에서 `substring()` 메서드는 문자열의 특정 부분을 추출하는 데 사용됩니다. 이 메서드는 지정된 시작 인덱스에서 시작하여, 선택적으로 끝 인덱스 전까지의 부분 문자열을 반환합니다.
### `substring()` 메서드 사용법
`substring()` 메서드는 두 가지 형태로 사용할 수 있습니다:
1. **한 개의 인자를 사용하는 경우 (`substring(startIndex)`):**
- 이 형태는 `startIndex`에서 시작하여 문자열의 끝까지의 부분 문자열을 반환합니다.
- 예: `str.substring(5)`는 `str` 문자열의 6번째 문자부터 시작하는 부분 문자열을 반환합니다.
2. **두 개의 인자를 사용하는 경우 (`substring(startIndex, endIndex)`):**
- 이 형태는 `startIndex`에서 시작하여 `endIndex - 1`까지의 부분 문자열을 반환합니다.
- 예: `str.substring(5, 8)`는 `str` 문자열의 6번째 문자부터 8번째 문자까지의 부분 문자열을 반환합니다.
### 인덱스 주의사항
- 인덱스는 0부터 시작합니다. 즉, 문자열의 첫 번째 문자는 인덱스 0에 위치합니다.
- `endIndex`는 부분 문자열에 포함되지 않습니다. 즉, `substring(startIndex, endIndex)`는 `endIndex` 바로 전까지의 문자를 포함합니다.
- 인덱스가 문자열의 범위를 벗어나면, `substring()`은 빈 문자열을 반환하거나 가능한 부분까지의 문자열을 반환합니다.
### 예시
```cpp
String str = "Hello, World!";
String sub1 = str.substring(7); // "World!" 반환
String sub2 = str.substring(0, 5); // "Hello" 반환
```
이 예시에서 `sub1`은 `str`의 8번째 문자(`W`)부터 끝까지의 부분 문자열을, `sub2`는 `str`의 첫 번째 문자(`H`)부터 5번째 문자(`o`)까지의 부분 문자열을 각각 반환합니다.
아두이노에서 `String` 객체의 특정 위치에 있는 문자를 확인하는 방법은 매우 간단합니다. `String` 객체의 특정 인덱스에서 문자를 가져오기 위해서는 `charAt()` 메소드 또는 배열 스타일의 접근 방식을 사용할 수 있습니다. 그리고 문자를 비교하기 위해서는 단일 따옴표를 사용하는 것이 중요합니다.
`str[num] != " "` 이 코드에서 `" "`는 더블 따옴표로 묶인 문자열 리터럴을 나타냅니다. C++에서 단일 문자를 나타내려면 단일 따옴표를 사용해야 합니다. 따라서 `" "` 대신 `' '`를 사용해야 합니다.
### 문자 비교 코드 예시
```cpp
String str = "Hello, World!";
int num = 5;
if (str[num] != ' ') {
// num 번째 문자가 공백이 아닌 경우
}
```
또는 `charAt()` 메소드를 사용할 수도 있습니다:
```cpp
if (str.charAt(num) != ' ') {
// num 번째 문자가 공백이 아닌 경우
}
```
이 예시에서는 `str`의 `num`번째 문자가 공백 문자(`' '`)와 다른지를 비교합니다. 문자 비교를 할 때는 단일 따옴표(`' '`)를 사용하는 것이 맞습니다.
댓글
댓글 쓰기