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() | |
| 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) |
(since 6.11) QStringEncoder::FinalizeResult | finalize() |
(since 6.11) QStringEncoder::FinalizeResult | finalize(char *out, qsizetype maxlen) |
| 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() && !fromUtf16.hasError()) { QString chunk = get_new_data(); encoded += fromUtf16(chunk); } auto result = fromUtf16.finalize(); if (result.error != QStringEncoder::FinalizeResult::Error::NoError) { // Handle error }
QStringEncoder 객체는 청크 사이의 상태를 유지하므로 UTF-16 대리 문자가 청크 사이에 분할되어 있어도 올바르게 작동합니다.
QStringEncoder 객체는 내부 상태 때문에 복사할 수 없지만 이동할 수는 있습니다.
QStringConverter 와 QStringDecoder 를참조하세요 .
멤버 함수 문서
[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 을 인코딩할 수 있는 최대 크기 요건을 확인합니다. 이 함수는 반환된 끝 포인터를 포함한 out 과 out + requiredSpace() 사이의 모든 바이트에 쓸 수 있습니다.
requiredSpace()도 참조하세요 .
QStringEncoder::DecodedData<const QString &> QStringEncoder::encode(const QString &in)
QStringEncoder::DecodedData<QStringView> QStringEncoder::encode(QStringView in)
QStringEncoder::DecodedData<const QString &> QStringEncoder::operator()(const QString &in)
QStringEncoder::DecodedData<QStringView> QStringEncoder::operator()(QStringView 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; };
[since 6.11] QStringEncoder::FinalizeResult QStringEncoder::finalize(char *out, qsizetype maxlen)
[since 6.11] QStringEncoder::FinalizeResult QStringEncoder::finalize()
더 이상 데이터가 도착하지 않을 것이라는 신호를 디코더에 보냅니다.
또한 디코딩 대기 중인 잔여 콘텐츠의 데이터를 제공할 수도 있습니다. 설명할 잔여 데이터가 없는 경우 반환의 error 필드는 NoError 으로 설정됩니다.
out 이 제공되고 null이 아닌 경우 최대 maxlen 문자를 쓸 수 있는 공백이 있어야 합니다. 이 공간에 최대 이 문자 수만큼의 잔여 출력이 기록되며, 반환 값의 next 필드로 끝이 표시됩니다. 일반적으로 이 잔여 데이터는 변환되지 않은 나머지 입력 문자당 하나의 대체 문자로 구성됩니다. ISO-2022-JP와 같은 상태 저장 인코딩을 사용하는 경우 문자 스트림의 현재 상태를 복원하거나 종료하기 위해 바이트를 쓸 수도 있습니다.
모든 잔여 콘텐츠가 out, out 이 nullptr 이거나 잔여 데이터가 없는 경우, 디코더는 finalize()에서 반환 시 리셋됩니다. 그렇지 않으면 finalize()를 추가로 호출하여 남은 데이터를 검색하거나 폐기할 수 있습니다.
이 함수는 Qt 6.11에 도입되었습니다.
hasError() 및 appendToBuffer()도 참조하십시오 .
qsizetype QStringEncoder::requiredSpace(qsizetype inputLength) const
inputLength 디코딩된 데이터를 처리하는 데 필요한 최대 문자 수를 반환합니다.
appendToBuffer()도 참조하세요 .
© 2026 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.