안녕하세요 준준입니다.
이번 게시글에서는 size_t와 string::npos에 대해서 알아보도록 하겠습니다.
size_t란?
size_t는 C++ 표준 라이브러리에서 정의된 데이터 타입으로, 부호 없는 정수형(unsigned integer)으로 사용됩니다.
size_t는 보통 메모리 할당, 배열 인덱스, 문자열 길이 등을 나타내는데 사용됩니다.
size_t는 각각의 플랫폼에서 동일한 크기를 가지도록 보장되어 있으며,
대부분의 컴파일러에서는 32비트에서는 4바이트, 64비트에서는 8바이트로 정의되어 있습니다.
string::npos란?
string::npos는 C++ 표준 라이브러리에서 제공하는 상수로,
문자열에서 해당 문자열이 존재하지 않는 경우를 나타내는 값입니다.
예를 들어, string::find() 함수는 문자열에서 찾는 문자열이 존재하지 않는 경우 string::npos 값을 반환합니다.
이 값은 일반적으로 -1과 같은 값을 가지며, unsigned 타입인 size_t로 정의되어 있습니다.
따라서, 문자열에서 특정 문자열을 찾는 코드를 작성할 때는 string::find() 함수를 사용하여
찾고자 하는 문자열이 존재하는지 확인한 후, string::npos 값과 비교하여 처리할 수 있습니다.
아래는 size_t와 npos를 활용한 예제 코드입니다.
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
vector<string> strs = {"10 x2", "5 +100", "20 +200"};
for (string str : strs) {
size_t x_pos = str.find("x");
size_t plus_pos = str.find("+");
if (x_pos != string::npos) { // "x"를 찾은 경우
string first_str = str.substr(0, x_pos);
string second_str = str.substr(x_pos + 1);
int first_num = stoi(first_str);
int second_num = stoi(second_str);
cout << first_num << ", " << second_num << endl;
}
else if (plus_pos != string::npos) { // "+"를 찾은 경우
string first_str = str.substr(0, plus_pos);
string second_str = str.substr(plus_pos + 1);
int first_num = stoi(first_str);
int second_num = stoi(second_str);
cout << first_num << ", " << second_num << endl;
}
}
return 0;
}
반응형
'프로그래밍 언어 > c++' 카테고리의 다른 글
[C/C++] Stack in c++ (기본 사용법, 예제) (1) | 2024.05.29 |
---|---|
[c++] 대문자, 소문자 구분 하는 방법 (islower, isupper) (0) | 2023.05.03 |
[C++] pow, sqrt 함수란?(루트함수, 제곱, 제곱근) (0) | 2023.04.28 |
쓰레드 [thread/THREAD] (0) | 2023.02.27 |
[c/c++] 일, 월, 년을 원하는 만큼 더하는 프로그램 (0) | 2023.02.23 |