[C++] string

seunghyun·2023년 7월 5일
0

기본적으로 string 클래스에서는 오퍼레이터 오버로딩이 되어있다.

std::string str = "onsenhyo";
std::string str2 = "onsenhyo";

// 비교 방법 1
str.compare(str2) == 0 // 같으면 0, 다르면 -1

// 비교 방법 2 (ID/PW 맞는지 등)
if (str == str2)
{
	// ...
}

// 복사
string str3;
str3 = str;

// 추가 ()
str.append("1234");
str += "1234";

// 찾기
auto c = str.find("on"); // 몇 번째 인덱스인지 반환해준다
if (c == std::string::npos)
{
	cout << "not found" << endl;
}

// 교체 (비속어 교체하기)
string chatStr = "SHIT!!!";
string findStr = "SHIT";
string replaceStr = "****";
chatStr.replace(chatStr.find(findStr), findStr.length(), replaceStr);

// 문자열 자르기
string str4 = str.substr(0, 3);

string::npos

std::string::npos는 C++ 표준 라이브러리에서 문자열의 끝을 나타내는 정적 상수입니다. 이 값은 std::string 클래스의 멤버 함수 find() 등에서 문자열이나 문자를 검색할 때 찾지 못한 경우 반환되는 특별한 값입니다.

std::string::nposstd::string::size_type 타입의 상수로 정의되어 있으며, 대개 std::string의 크기를 나타내는 타입과 동일합니다. 보통 size_t로 정의되는데, 이는 부호 없는 정수 타입으로 양수만 표현 가능합니다.

find() 함수는 주어진 문자열에서 특정 문자열 또는 문자를 찾아 첫 번째 등장하는 인덱스를 반환합니다. 만약 찾는 문자열이나 문자를 찾지 못한다면 std::string::npos를 반환합니다. npos"not position"의 약자로, 문자열이나 문자를 찾지 못한 경우에 해당하는 값입니다.

따라서 위의 예시에서 if (c == std::string::npos)find() 함수를 통해 검색된 결과를 확인하여 문자열이나 문자를 찾지 못한 경우를 판단하는 조건입니다. 조건이 참인 경우에는 "not found"라는 메시지를 출력하게 됩니다.

0개의 댓글