반응형
std::string::npos는 string 클래스 안에서 정의된 특별한 상수 값이다.
- std::string::npos는 size_t 타입의 상수.
- 값은 사실상 가장 큰 size_t 값 (즉, unsigned 정수에서의 -1).
- npos는 "유효하지 않은 위치" 또는 "찾지 못했다"를 나타내는 용도로 쓰인다.
static const size_t npos = -1;
예시
#include <iostream>
#include <string>
using namespace std;
int main() {
string s = "Hello World";
// 'W' 찾기
size_t pos1 = s.find('W'); // 6
// 'x' 찾기 (없음)
size_t pos2 = s.find('x'); // string::npos
if (pos2 == string::npos) {
cout << "'x' not found\n";
}
cout << "pos1 = " << pos1 << "\n";
cout << "pos2 = " << pos2 << "\n"; // 출력은 엄청 큰 수(=size_t max)
}
// 출력결과
// 'x' not found
// pos1 = 6
// pos2 = 18446744073709551615 // 64비트 환경에서 size_t max
정리
- npos = size_t의 최대값 (보통 -1로 정의)
- 의미: "위치 없음 (not found)"
- 주로 find, rfind, find_first_of 같은 검색 함수들이 실패했을 때 반환
size_t
size_t는 부호없는 (양의) 정수 타입이다.
- 32비트 시스템 → unsigned int (4바이트, 0 ~ 4,294,967,295)
- 64비트 시스템 → unsigned long long (8바이트, 0 ~ 18,446,744,073,709,551,615)
그래서 npos = -1 은
- -1은 원래 int 상수인데, size_t로 변환되면서
→ 부호 없는 정수의 최대값이 된다. - 예를 들어:
- 32비트 → 4294967295
- 64비트 → 18446744073709551615
즉, npos는 size_t라는 타입을 가진 특별한 값이다.
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
| C++ 숫자 / 알파벳 / 공백 / 특수문자 판별 함수 정리 (isalpha, isdigit, isalnum, isspace, ispunct) (0) | 2025.09.30 |
|---|---|
| C++ 문자 대소문자 판별 & 변환 함수 정리 (isupper, islower, toupper, tolower) (0) | 2025.09.30 |
| C++ String 헤더의 substr / find / erase 사용법 (0) | 2025.09.29 |
| C++에서 NULL , NUL, 0, \0 의 차이 (0) | 2025.09.27 |
| C++ 연산자 우선 순위 (0) | 2025.09.21 |
댓글