QStringDecoder Class

QStringDecoder 클래스는 텍스트에 대한 상태 기반 디코더를 제공합니다. 더 보기...

Header: #include <QStringDecoder>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
상속합니다: QStringConverter

참고: 이 클래스의 모든 함수는 재진입합니다.

공용 함수

QStringDecoder()
QStringDecoder(QAnyStringView name, QStringConverter::Flags flags = Flag::Default)
QStringDecoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default)
QChar *appendToBuffer(QChar *out, QByteArrayView in)
(since 6.6) char16_t *appendToBuffer(char16_t *out, QByteArrayView in)
QStringDecoder::EncodedData<QByteArrayView> decode(QByteArrayView ba)
QStringDecoder::EncodedData<const QByteArray &> decode(const QByteArray &ba)
qsizetype requiredSpace(qsizetype inputLength) const
QStringDecoder::EncodedData<QByteArrayView> operator()(QByteArrayView ba)
QStringDecoder::EncodedData<const QByteArray &> operator()(const QByteArray &ba)

정적 공용 멤버

QStringDecoder decoderForHtml(QByteArrayView data)

상세 설명

텍스트 디코더는 특정 인코딩을 사용하는 인코딩된 텍스트 형식을 Qt의 내부 표현으로 변환합니다.

인코딩된 데이터를 QString 로 변환하는 것은 다음 코드를 사용하여 수행할 수 있습니다:

QByteArray encodedString = "...";
auto toUtf16 = QStringDecoder(QStringDecoder::Utf8);
QString string = toUtf16(encodedString);

디코더는 호출 사이에 필요한 모든 상태를 기억하므로, 예를 들어 네트워크를 통해 수신할 때와 같이 청크로 수신된 데이터를 변환하는 것도 새 데이터를 사용할 수 있을 때마다 디코더를 호출하면 쉽게 변환할 수 있습니다:

auto toUtf16 = QStringDecoder(QStringDecoder::Utf8);

QString string;
while (new_data_available()) {
    QByteArray chunk = get_new_data();
    string += toUtf16(chunk);
}

청크 사이의 상태를 유지하므로 멀티바이트 문자 시퀀스 중간에 청크가 분할되더라도 QStringDecoder 객체는 올바르게 작동합니다.

QStringDecoder 객체는 내부 상태 때문에 복사할 수 없지만 이동할 수는 있습니다.

QStringConverterQStringEncoder참조하십시오 .

멤버 함수 문서

QStringDecoder::EncodedData<QByteArrayView> QStringDecoder::decode(QByteArrayView ba)

QStringDecoder::EncodedData<QByteArrayView> QStringDecoder::operator()(QByteArrayView ba)

QStringDecoder::EncodedData<const QByteArray &> QStringDecoder::decode(const QByteArray &ba)

QStringDecoder::EncodedData<const QByteArray &> QStringDecoder::operator()(const QByteArray &ba)

ba 를 변환하고 QString 로 암시적으로 변환 가능한 구조체를 반환합니다.

QByteArray encodedString = "...";
auto toUtf16 = QStringDecoder(QStringDecoder::Utf8);
auto data = toUtf16(encodedString); // data's type is QStringDecoder::EncodedData<const QByteArray &>
QString string = toUtf16(encodedString); // Implicit conversion to QString

// Here you have to cast "data" to QString
auto func = [&]() { return !toUtf16.hasError() ? QString(data) : u"foo"_s; }

[constexpr noexcept] QStringDecoder::QStringDecoder()

기본값은 디코더를 생성합니다. 기본 디코더는 유효하지 않으므로 텍스트 변환에 사용할 수 없습니다.

[explicit] QStringDecoder::QStringDecoder(QAnyStringView name, QStringConverter::Flags flags = Flag::Default)

nameflags 를 사용하여 디코더 객체를 생성합니다. name 가 알려진 인코딩의 이름이 아닌 경우 잘못된 변환기가 생성됩니다.

참고: 6.8 이전 Qt 버전에서는 이 함수에 UTF-8로 인코딩된 것으로 예상되는 const char * 만 사용했습니다.

isValid()도 참조하십시오 .

[explicit constexpr] QStringDecoder::QStringDecoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default)

encodingflags 을 사용하여 디코더 객체를 생성합니다.

QChar *QStringDecoder::appendToBuffer(QChar *out, QByteArrayView in)

in 에서 본 바이트 시퀀스를 디코딩하고 디코딩된 결과를 out 부터 시작하는 버퍼에 씁니다. 쓰여진 데이터의 끝 부분에 대한 포인터를 반환합니다.

out 는 디코딩된 모든 데이터를 담을 수 있을 만큼 충분히 커야 합니다. in.size() 바이트의 인코딩된 데이터 버퍼를 디코딩하기 위한 최대 크기 요구 사항을 확인하려면 requiredSpace 을 참조하세요.

requiredSpace도 참조하세요 .

[since 6.6] char16_t *QStringDecoder::appendToBuffer(char16_t *out, QByteArrayView in)

이 함수는 오버로드된 함수입니다.

이 함수는 Qt 6.6에 도입되었습니다.

[static] QStringDecoder QStringDecoder::decoderForHtml(QByteArrayView data)

HTML 메타 태그의 선행 바이트 순서 표시 또는 문자 집합 지정자를 확인하여 data 에서 HTML의 인코딩을 결정하고 인코딩과 일치하는 QStringDecoder 을 반환합니다. 반환된 디코더가 유효하지 않으면 지정된 인코딩이 QStringConverter 에서 지원되지 않는 것입니다. 인코딩이 감지되지 않으면 이 메서드는 Utf8용 디코더를 반환합니다.

isValid()도 참조하세요 .

qsizetype QStringDecoder::requiredSpace(qsizetype inputLength) const

inputLength 인코딩된 데이터를 처리하는 데 필요한 최대 UTF-16 코드 단위의 양을 반환합니다.

appendToBuffer도 참조하세요 .

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.