개인 공부 후 자료를 남겨놓기 위한 목적이므로,
생략되거나 오류가 있을 수 있음을 알립니다.
이번 포스팅에서는 라이브러리 중에 string을 사용하지 않고,
char를 이용하는 라이브러리를 통해 문자열을 다루어보도록 한다.
char를 이용 문자열을 다루는 라이브러리는 아래의 두 라이브러리가 있다.
- string.h
- cstring
두 라이브러리를 같은 기능을 하지만, 보통 C에서는 첫 번째 라이브러리를 사용하고,
Cpp에서는 아래의 라이브러리를 사용한다.
( 위 두 라이브러리는 <string>과는 다른 라이브러리이다.)
cstring을 이용하여 문자열 복사하기.
특정 문자열을 buf라는 char 변수에 복사해보도록 하자.
이때 사용하는 함수는 strcpy()라는 함수이며, 다음과 같은 방법으로 사용한다.
strcpy()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char buf[10];
strcpy(buf, "HI");
cout << buf;
// buf에는 "HI"가 복사 됨.
return 0;
}
|
cs |
strcmp()
strcmp는 두 인자가 같은지 아닌지를 확인하는 함수이다.
같은 경우에는 0을 출력하기 때문에 보통 !strcmp()로 사용해 같은 경우 1(true)이 출력되도록 사용한다.
(id과 password 가 맞는지 확인하고, LOGIN과 FAIL를 출력하는 코드)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#include <iostream>
#include <cstring>
using namespace std;
int main() {
//strcmp(문자1, 문자2) == 0 이면 같다는 의미
char id[10];
char password[10];
cin >> id >> password;
if (!strcmp(id, "tarra") && !strcmp(password, 1234)) {
cout << "LOGIN";
} else {
cout << "FAIL";
}
return 0;
}
|
cs |
만약 <string>을 사용한다면?
string을 사용하게 된다면 훨씬 간단한 방법으로 두 변수를 비교할 수 있게 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#include <iostream>
#include <string>
using namespace std;
int main() {
string id, password;
cin >> id >> password;
if (id == "tarra" && password == "1234") {
cout >> "LOGIN";
} else cout >> "FAIL";
return 0;
}
|
cs |
그럼에도 cstring을 공부하는 이유?
=> 추후에 배울 파싱(Parsing)을 좀 더 잘 이해하고, 사용하기 위해서!
'Develop > Cpp' 카테고리의 다른 글
[C++] String 클래스 (0) | 2022.06.22 |
---|---|
[Cpp] Direct 배열 (0) | 2022.06.22 |
[Cpp] STL (스택, 큐, 우선순위 큐) (0) | 2022.06.22 |
[Cpp] 구조체 (0) | 2022.06.21 |
[Cpp] 함수 호출 방식 (Call by value, Call by reference) (0) | 2022.06.20 |