std :: string 설정 여부를 확인하는 방법은 무엇입니까?
를 사용하면로 char*
초기화 NULL
하고 나중에 비교를 통해 설정되었는지 확인할 수 있습니다. 에 대해 동일한 작업을 수행하는 방법 std::string
? 문자열이 설정되었는지 확인하는 방법은 무엇입니까?
편집 : 내가 설정 한 문자열도 비어 있으면 어떻게합니까? std::string
설정 여부를 확인하기 위해 추가 플래그를 사용해야 합니까?
사용 empty()
:
std::string s;
if (s.empty())
// nothing in s
여러 답변이 지적했듯이, std::string
그 가치에 대한 '무효'의 개념이 없습니다. 이러한 값으로 빈 문자열을 사용하는 것이 충분하지 않은 경우 (즉, 문자가없는 문자열과 값이없는 문자열을 구분해야 함) a를 사용 std::string*
하여 NULL 또는 a 로 설정할 수 있습니다 . std::string
적절한 경우 유효한 인스턴스.
포인터 std::string
를 설정하는 모든 개체 의 수명을 관리하는 데 도움이되는 일종의 스마트 포인터 유형 (boost :: scoped_ptr 등)을 사용할 수 있습니다.
당신은 할 수 없습니다. 적어도 포인터가인지 여부를 테스트 할 수있는 동일한 방법은 아닙니다 NULL
.
std::string
객체는 항상 초기화 항상 문자열을 포함합니다; 기본적으로 내용은 빈 문자열 ( ""
)입니다.
비어 있는지 테스트 할 수 있습니다 ( s.size() == 0
또는 사용 s.empty()
).
std :: string의 기본 생성자는 항상 null 문자열로 설정된 객체를 반환합니다.
더 "해제"상태가 위해없는 std::string
것이되어, 항상 뭔가 설정합니다.
std :: string 클래스로 말할 수 없다고 생각합니다. 그러나이 정보가 정말로 필요한 경우 항상 std :: string에서 클래스를 파생시키고 파생 된 클래스가 생성 이후 (또는 다른 임의의 시간) 변경되었는지 여부를 알 수있는 기능을 제공 할 수 있습니다. 또는 더 나은 방법은 기본 클래스 가상 소멸자가 없기 때문에 std :: string에서 파생하는 것이 좋은 생각이 아닐 수 있으므로 std :: string을 래핑하는 새 클래스를 작성하는 것입니다. 아마도 더 많은 작업이 필요하지만 최적의 솔루션을 위해서는 더 많은 작업이 필요한 경향이 있습니다.
물론, ""이외의 내용이 포함 된 경우 "설정"된 것으로 가정 할 수 있지만 수동으로 ""로 설정되는 것을 감지하지는 못합니다.
참고 URL : https://stackoverflow.com/questions/3903587/how-to-check-if-a-stdstring-is-set-or-not
'Development Tip' 카테고리의 다른 글
Pandas DataFrame에서 열 중첩을 해제 (폭파)하는 방법은 무엇입니까? (0) | 2020.11.26 |
---|---|
CSS : 중앙 블록이지만 내용을 왼쪽에 정렬 (0) | 2020.11.26 |
MySQL 결과가 PHP에서 반환되었는지 확인하는 가장 좋은 방법은 무엇입니까? (0) | 2020.11.26 |
두 필드 값으로 PHP 정렬 배열 (0) | 2020.11.26 |
.bashrc에 추가 파일 포함 (0) | 2020.11.26 |