"일련 번호"개념이있는 함수를 작성하려고합니다. 그것은 특정한 길이입니다. 13 바이트 숫자의 개념을 래핑하는 SerialNumber라는 새로운 유형을 작성하여 생성자를 단순화하기를 바라고 있습니다. 예를 들어, 값을 자르고 반 직관적 일 수있는 Product (const char * m) 또는 Product (const std :: string & str)는 원하지 않습니다. 항상 올바른 길이로 믿을 수있는 Product (const SerialNumber & sn)를 선호합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 그것은 char [13]에 대한 typedef인가, 아니면 문자열 클래스로 이것을 수행 할 수있는 방법일까요?특정 길이의 C++ 문자열
1
A
답변
4
가장 쉬운 방법은 std :: string을 허용하는 생성자를 생성 한 다음 생성자 내에서 길이가 실제로 13인지 확인하는 것입니다. 그렇지 않은 경우 단순히 예외가 발생하므로 그 이유가 있습니다. char [13]는 문자열이 13 자 길이라는 것을 보증하지 않으며, 모두 "hi"가 될 수 있고 11 개의 널 종료자를 따라야합니다.
1
당신의 경우에는 확실하지 않지만 한 가지 옵션은 여전히 std :: string을 사용하는 것입니다. 그러나 예를 들어 Product
의 생성자는 문자열의 길이가 틀린 경우 throw합니다. 그렇지 않으면 가장 간단한 접근 방식은 std::string
(또는 char[14]
에 대한 래퍼 SerialNumber
이지만 C++ 코드에서 C 문자열을 사용하는 것을 주저합니다.)
0
나는 typedef char [13] 또는 char [13] 주위의 래핑 클래스를 사용합니다. 문자표는 char *와 같기 때문에 필요할 경우 쉽게 std :: string으로 변환 할 수 있습니다.
0
나는 예외, 당신은 당신이 나중에에서 해제 할 수 어설를 사용할 수도 "영구"느끼는 경우에 대한 대안으로 다음과 같은
struct SerialNumber {
static bool TryCreate(const std::string& data, std::auto_ptr<SerialNumber>& ptr) {
if (data.length() != 13) {
ptr.reset();
return false;
} else {
ptr.reset(new SerialNumber(data.c_str()));
return true;
}
}
private:
SerialNumber(const char* data) {
memcpy(m_data, data, sizeof(data));
}
char m_data[13];
};
관련 문제
- 1. MySQL에서 특정 길이의 문자열 필드에 대한 쿼리
- 2. 배열에서 특정 길이의 문자열 가져 오기
- 3. C# 특정 길이의 줄 바꿈을 추가하기 위해 문자열 편집
- 4. 고정 길이의 문자열 순열
- 5. 특정 길이의 파워 세트 요소
- 6. 정규 표현식으로 특정 길이의 문자열에 일치하는 숫자
- 7. int를 특정 길이의 문자열로 변환합니다.
- 8. 콘솔에서 알 수없는 길이의 문자열 읽기
- 9. COBOL에서 알 수없는 길이의 문자열 연결
- 10. Haskell의 QuickCheck을 사용하여 특정 길이의 목록 생성
- 11. 특정 길이의 이름을 가진 디렉토리를 찾는 방법
- 12. ASP.NET/C# Linq에이 길이의 GridView
- 13. 문자열 내의 특정 문자열 수
- 14. 파일에서 임의의 길이의 바이트를 C++로 읽어들입니다.
- 15. 다른 길이의 시퀀스로 작업하기
- 16. 목표 C - 문자열의 수와 길이의 불일치
- 17. 단일 특정 문자열 대체 메서드 목표 C
- 18. C# 문자열 생성 (지정된 길이)
- 19. c - bogus 헤더 길이의 원시 소켓
- 20. 정의되지 않은 길이의 C# 개체 배열을 만드시겠습니까?
- 21. asp.net mvc에서 DataAnnotations를 사용하여 문자열 길이의 유효성을 검사하는 방법은 무엇입니까?
- 22. 동일한 길이의 함수
- 23. 동적 길이의 벡터 초기화
- 24. 정규 표현식은 특정 문자열
- 25. 특정 문자열 및 NSScanner
- 26. 특정 {쿼리 문자열}/$ _가
- 27. MySQL의 특정 문자열
- 28. 특정 문자열 패턴 제거 R
- 29. JPA 주석을 통해 특정 길이의 정수를 지정하는 방법
- 30. 표준 입력에서 특정 문자열 확인
같은 것을 할 것입니다. –