QStringEncoder Class
QStringEncoder 클래스는 텍스트에 대한 상태 기반 인코더를 제공합니다. 더 보기...
Header: | #include <QStringEncoder> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
상속합니다: | QStringConverter |
참고: 이 클래스의 모든 함수는 재진입합니다.
공용 함수
QStringEncoder() | |
QStringEncoder(QAnyStringView name, QStringConverter::Flags flags = Flag::Default) | |
QStringEncoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default) | |
char * | appendToBuffer(char *out, QStringView in) |
QStringEncoder::DecodedData<QStringView> | encode(QStringView in) |
QStringEncoder::DecodedData<const QString &> | encode(const QString &in) |
qsizetype | requiredSpace(qsizetype inputLength) const |
QStringEncoder::DecodedData<QStringView> | operator()(QStringView in) |
QStringEncoder::DecodedData<const QString &> | operator()(const QString &in) |
자세한 설명
텍스트 인코더는 특정 인코딩을 사용하여 Qt의 내부 표현에서 인코딩된 텍스트 형식으로 텍스트를 변환합니다.
문자열을 유니코드에서 로컬 인코딩으로 변환하는 것은 다음 코드를 사용하여 수행할 수 있습니다:
QString string = "..."; auto fromUtf16 = QStringEncoder(QStringEncoder::Utf8); QByteArray encodedString = fromUtf16(string);
인코더는 호출 사이에 필요한 모든 상태를 기억하므로, 예를 들어 네트워크를 통해 데이터를 수신할 때와 같이 청크로 수신된 데이터를 변환할 때도 새 데이터를 사용할 수 있을 때마다 인코더를 호출하면 쉽게 변환할 수 있습니다:
auto fromUtf16 = QStringEncoder(QStringEncoder::Utf8); QByteArray encoded; while (new_data_available()) { QString chunk = get_new_data(); encoded += fromUtf16(chunk); }
QStringEncoder 객체는 청크 사이의 상태를 유지하므로 UTF-16 대리 문자가 청크 사이에 분할되어 있어도 올바르게 작동합니다.
QStringEncoder 객체는 내부 상태 때문에 복사할 수 없지만 이동할 수는 있습니다.
QStringConverter 및 QStringDecoder 을참조하십시오 .
멤버 함수 문서
QStringEncoder::DecodedData<QStringView> QStringEncoder::encode(QStringView in)
QStringEncoder::DecodedData<QStringView> QStringEncoder::operator()(QStringView in)
QStringEncoder::DecodedData<const QString &> QStringEncoder::encode(const QString &in)
QStringEncoder::DecodedData<const QString &> QStringEncoder::operator()(const QString &in)
in 를 변환하고 QByteArray 로 암시적으로 변환 가능한 구조체를 반환합니다.
QString string = "..."; auto fromUtf16 = QStringEncoder(QStringEncoder::Utf8); auto data = fromUtf16(string); // data's type is QStringEncoder::DecodedData<const QString &> QByteArray encodedString = fromUtf16(string); // Implicit conversion to QByteArray // Here you have to cast "data" to QByteArray auto func = [&]() { return !fromUtf16.hasError() ? QByteArray(data) : "foo"_ba; }
[constexpr noexcept]
QStringEncoder::QStringEncoder()
기본값은 인코더를 생성합니다. 기본 인코더는 유효하지 않으므로 텍스트를 변환하는 데 사용할 수 없습니다.
[explicit]
QStringEncoder::QStringEncoder(QAnyStringView name, QStringConverter::Flags flags = Flag::Default)
name 와 flags 를 사용하여 인코더 객체를 생성합니다. name 가 알려진 인코딩 이름이 아닌 경우 잘못된 변환기가 생성됩니다.
참고: 6.8 이전 Qt 버전에서 이 함수는 UTF-8 인코딩이 예상되는 const char *
만 받았습니다.
isValid()도 참조하세요 .
[explicit constexpr]
QStringEncoder::QStringEncoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default)
encoding 및 flags 을 사용하여 인코더 객체를 생성합니다.
char *QStringEncoder::appendToBuffer(char *out, QStringView in)
in 을 인코딩하고 인코딩된 결과를 out 부터 시작하여 버퍼에 씁니다. 기록된 데이터의 끝 부분에 대한 포인터를 반환합니다.
참고: out 은 디코딩된 모든 데이터를 담을 수 있을 만큼 충분히 커야 합니다. requiredSpace ()를 사용하여 in 을 인코딩할 수 있는 최대 크기 요건을 확인합니다.
requiredSpace()도 참조하세요 .
qsizetype QStringEncoder::requiredSpace(qsizetype inputLength) const
inputLength 디코딩된 데이터를 처리하는 데 필요한 최대 문자 수를 반환합니다.
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.