QUrlQuery Class
QUrlQuery 클래스는 URL 쿼리에서 키-값 쌍을 조작하는 방법을 제공합니다. 더 보기...
Header: | #include <QUrlQuery> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 상속된 멤버를 포함한 모든 멤버 목록
- QUrlQuery는 입력/출력 및 네트워킹, 네트워크 프로그래밍 API, 암시적으로 공유되는 클래스의 일부입니다.
이 클래스는 동등 비교가 가능합니다.
참고: 이 클래스의 모든 함수는 재진입입니다.
공용 함수
QUrlQuery() | |
QUrlQuery(const QString &queryString) | |
QUrlQuery(const QUrl &url) | |
QUrlQuery(std::initializer_list<std::pair<QString, QString>> list) | |
QUrlQuery(const QUrlQuery &other) | |
(since 6.5) | QUrlQuery(QUrlQuery &&other) |
~QUrlQuery() | |
void | addQueryItem(const QString &key, const QString &value) |
QStringList | allQueryItemValues(const QString &key, QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const |
void | clear() |
bool | hasQueryItem(const QString &key) const |
bool | isEmpty() const |
QString | query(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const |
QString | queryItemValue(const QString &key, QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const |
QList<std::pair<QString, QString>> | queryItems(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const |
QChar | queryPairDelimiter() const |
QChar | queryValueDelimiter() const |
void | removeAllQueryItems(const QString &key) |
void | removeQueryItem(const QString &key) |
void | setQuery(const QString &queryString) |
void | setQueryDelimiters(QChar valueDelimiter, QChar pairDelimiter) |
void | setQueryItems(const QList<std::pair<QString, QString>> &query) |
void | swap(QUrlQuery &other) |
QString | toString(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const |
QUrlQuery & | operator=(QUrlQuery &&other) |
QUrlQuery & | operator=(const QUrlQuery &other) |
정적 공용 멤버
char16_t | defaultQueryPairDelimiter() |
char16_t | defaultQueryValueDelimiter() |
관련 비회원
size_t | qHash(const QUrlQuery &key, size_t seed = 0) |
bool | operator!=(const QUrlQuery &lhs, const QUrlQuery &rhs) |
bool | operator==(const QUrlQuery &lhs, const QUrlQuery &rhs) |
상세 설명
다음과 같은 URL에 있는 쿼리 문자열을 파싱하는 데 사용됩니다:
위와 같은 쿼리 문자열은 URL의 옵션을 전송하는 데 사용되며 일반적으로 여러 개의 키-값 쌍으로 디코딩됩니다. 위의 쿼리는 목록에 "type" 및 "color" 키가 있는 두 개의 항목이 포함됩니다. 쿼리의 개별 구성 요소에서 QUrl::setQuery()에 사용하기에 적합한 쿼리 문자열을 만드는 데 QUrlQuery를 사용할 수도 있습니다.
쿼리 문자열을 구문 분석하는 가장 일반적인 방법은 생성자에서 쿼리 문자열을 전달하여 초기화하는 것입니다. 그렇지 않으면 setQuery() 메서드를 사용하여 구문 분석할 쿼리를 설정할 수 있습니다. 이 메서드는 setQueryDelimiters() 함수를 사용하여 비표준 구분 기호를 설정한 후 비표준 구분 기호가 포함된 쿼리를 구문 분석하는 데에도 사용할 수 있습니다.
인코딩된 쿼리 문자열은 query()를 사용하여 다시 얻을 수 있습니다. 이렇게 하면 내부에 저장된 모든 항목을 가져와 구분 기호를 사용하여 문자열을 인코딩합니다.
인코딩
쿼리 쿼리의 모든 게터 메서드는 query()를 포함하여 QUrl::ComponentFormattingOptions 유형의 선택적 매개변수를 지원하며, 이는 해당 데이터를 인코딩하는 방법을 지정합니다. QUrl::FullyDecoded 을 제외하고 반환되는 값은 여전히 퍼센트 인코딩된 문자열로 간주해야 하는데, 이는 디코딩된 형식으로 표현할 수 없는 특정 값(예: 제어 문자, UTF-8로 디코딩할 수 없는 바이트 시퀀스)이 있기 때문입니다. 따라서 퍼센트 문자는 항상 "%25"라는 문자열로 표시됩니다.
모든 설정자 메서드와 QUrlQuery의 hasQueryItem()와 같은 쿼리 메서드는 인코딩된 형식만 사용합니다. QUrl 와 달리 전달되는 문자열이 디코딩되도록 지정하는 선택적 매개 변수가 없습니다. 부적절하게 인코딩된 문자열이 설정자 또는 쿼리 메서드에 전달되면 QUrlQuery는 실패하는 대신 복구를 시도합니다. 즉, 이 클래스의 모든 함수는 QUrl::TolerantMode 디코딩 모드가 지정된 것처럼 문자열 인수를 구문 분석합니다.
애플리케이션 코드는 항상 적절한 인코딩을 보장하기 위해 노력해야 하며 문자열을 수정하는 TolerantMode 구문 분석에 의존해서는 안 됩니다. 특히 모든 사용자 입력은 이 클래스의 함수에 전달되기 전에 QUrl::toPercentEncoding() 또는 이와 유사한 함수를 사용하여 먼저 퍼센트 인코딩해야 합니다.
공백 및 더하기("+") 처리
웹 브라우저는 일반적으로 HTML FORM 요소에 있는 공백을 더하기 기호("+")로, 더하기 기호를 퍼센트 인코딩된 형식(%2B)으로 인코딩합니다. 그러나 URL을 관리하는 인터넷 사양에서는 공백과 더하기 기호를 동등한 것으로 간주하지 않습니다.
따라서 QUrlQuery는 공백 문자를 "+"로 인코딩하지 않으며 "+"를 공백 문자로 디코딩하지 않습니다. 대신 공백 문자는 인코딩된 형식으로 "%20"으로 렌더링됩니다.
HTML 양식과 같은 인코딩을 지원하기 위해 QUrlQuery는 또한 "%2B" 시퀀스를 더하기 기호로 디코딩하거나 더하기 기호를 인코딩하지 않습니다. 실제로 키, 값 또는 쿼리 문자열에서 발견되는 "%2B" 또는 "+" 시퀀스는 "%2B"를 "%2B"로 대문자로 바꾸는 것을 제외하고는 쓰여진 그대로 유지됩니다(대문자 "%2b"를 대문자로 바꾸는 것 제외).
전체 디코딩
QUrl::FullyDecoded 형식을 사용하면 퍼센트 인코딩된 모든 시퀀스가 완전히 디코딩되고 '%' 문자가 자신을 나타내는 데 사용됩니다. QUrl::FullyDecoded 은 데이터 손실이 발생할 수 있으므로 주의해서 사용해야 합니다. 손실될 수 있는 데이터에 대한 자세한 내용은 QUrl::FullyDecoded 문서를 참조하세요.
이 서식 모드는 퍼센트 인코딩을 원하지 않는 컨텍스트에서 사용자에게 표시되는 텍스트를 처리할 때만 사용해야 합니다. 쿼리 설정자와 쿼리 메서드는 QUrl::DecodedMode 구문 분석을 지원하지 않으므로 QUrl::FullyDecoded 을 사용하여 키 목록을 가져오면 객체에서 키를 찾지 못할 수 있다는 점에 유의하세요.
비표준 구분 기호
기본적으로 QUrlQuery는 등호("=")를 사용하여 키와 값을 구분하고 앰퍼샌드("&")를 사용하여 키-값 쌍을 서로 구분합니다. setQueryDelimiters ()를 호출하여 쿼리를 구문 분석하고 재구성하는 데 사용하는 구분 기호를 변경할 수 있습니다.
비표준 구분 기호는 RFC 3986에서 "하위 구분 기호"라고 부르는 것 중에서 선택해야 합니다. 이것이 바로 그것입니다:
sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
다른 문자를 사용하면 지원되지 않으며 예기치 않은 동작이 발생할 수 있습니다. QUrlQuery는 유효한 구분 기호를 전달했는지 확인하지 않습니다.
QUrl 을참조하세요 .
멤버 함수 문서
QUrlQuery::QUrlQuery()
빈 쿼리 객체를 생성합니다. 나중에 setQuery()를 호출하여 쿼리를 설정하거나 addQueryItem()를 사용하여 항목을 추가할 수 있습니다.
setQuery() 및 addQueryItem()도 참조하세요 .
[explicit]
QUrlQuery::QUrlQuery(const QString &queryString)
기본 쿼리 구분자를 사용하여 QUrlQuery 객체를 만들고 queryString 쿼리 문자열을 구문 분석합니다. 다른 구분 기호를 사용하여 쿼리 문자열을 구문 분석하려면 먼저 setQueryDelimiters()를 사용하여 구분 기호를 설정한 다음 setQuery()로 쿼리를 설정해야 합니다.
[explicit]
QUrlQuery::QUrlQuery(const QUrl &url)
기본 쿼리 구분자를 사용하여 쿼리 쿼리 객체를 만들고 url URL에 있는 쿼리 문자열을 구문 분석합니다. 다른 구분 기호를 사용하여 쿼리 문자열을 구문 분석하려면 먼저 setQueryDelimiters()를 사용하여 구분 기호를 설정한 다음 setQuery()로 쿼리를 설정해야 합니다.
QUrl::query()도 참조하세요 .
QUrlQuery::QUrlQuery(std::initializer_list<std::pair<QString, QString>> list)
키/값 쌍의 list 에서 QUrlQuery 객체를 생성합니다.
QUrlQuery::QUrlQuery(const QUrlQuery &other)
쿼리 구분 기호를 포함하여 other QUrlQuery 객체의 내용을 복사합니다.
[noexcept, since 6.5]
QUrlQuery::QUrlQuery(QUrlQuery &&other)
쿼리 구분자를 포함하여 other QUrlQuery 객체의 내용을 이동합니다.
이 함수는 Qt 6.5에 도입되었습니다.
[noexcept]
QUrlQuery::~QUrlQuery()
이 QUrlQuery 객체를 삭제합니다.
void QUrlQuery::addQueryItem(const QString &key, const QString &value)
URL의 쿼리 문자열 끝에 key = value 쌍을 추가합니다. 이 메서드는 동일한 키로 존재할 수 있는 기존 항목을 덮어쓰지 않습니다.
참고: 이 메서드는 HTML 양식처럼 공백(ASCII 0x20)과 더하기("+") 기호를 동일하게 취급하지 않습니다. 공백을 더하기 기호로 표시해야 하는 경우 실제 더하기 기호를 사용하세요.
참고: 키 및 값 문자열은 퍼센트 인코딩 형식이어야 합니다.
hasQueryItem() 및 queryItemValue()도 참조하세요 .
QStringList QUrlQuery::allQueryItemValues(const QString &key, QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const
반환 값을 인코딩하기 위해 encoding 에 지정된 옵션을 사용하여 URL에서 키가 key 와 같은 쿼리 문자열 값의 목록을 반환합니다. key 키를 찾을 수 없는 경우 이 함수는 빈 목록을 반환합니다.
참고: 키는 퍼센트 인코딩 형식이 될 것으로 예상됩니다.
queryItemValue() 및 addQueryItem()도 참조하세요 .
void QUrlQuery::clear()
현재 저장된 모든 키-값 쌍을 제거하여 이 QUrlQuery 객체를 지웁니다. 쿼리 구분자가 변경된 경우 이 함수는 변경된 값을 그대로 유지합니다.
isEmpty() 및 setQueryDelimiters()도 참조하세요 .
[static constexpr noexcept]
char16_t QUrlQuery::defaultQueryPairDelimiter()
키-값 쌍을 서로 구분하기 위한 기본 문자, 앰퍼샌드("&")를 반환합니다.
참고: Qt 6 이전에는 이 함수가 QChar 를 반환했습니다.
setQueryDelimiters(), queryPairDelimiter() 및 defaultQueryValueDelimiter()도 참조하세요 .
[static constexpr noexcept]
char16_t QUrlQuery::defaultQueryValueDelimiter()
쿼리에서 키와 값을 구분하기 위한 기본 문자, 등호("=")를 반환합니다.
참고: Qt 6 이전에는 이 함수가 QChar 를 반환했습니다.
setQueryDelimiters(), queryValueDelimiter() 및 defaultQueryPairDelimiter()도 참조하세요 .
bool QUrlQuery::hasQueryItem(const QString &key) const
URL에서 키가 key 과 같은 쿼리 문자열 쌍이 있는 경우 true
을 반환합니다.
참고: 키는 퍼센트 인코딩 형식일 것으로 예상됩니다.
addQueryItem() 및 queryItemValue()도 참조하세요 .
bool QUrlQuery::isEmpty() const
이 QUrlQuery 객체에 키-값 쌍이 없는 경우(예: 기본적으로 구성된 후 또는 빈 쿼리 문자열을 구문 분석한 후) true
을 반환합니다.
QString QUrlQuery::query(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const
현재 이 QUrlQuery 객체에 저장된 키-값 쌍으로 구성되고 이 객체에 대해 선택된 쿼리 구분 기호로 구분된 재구성된 쿼리 문자열을 반환합니다. 키와 값은 encoding 매개변수에 지정된 옵션을 사용하여 인코딩됩니다.
이 함수의 경우 유일하게 모호한 구분 기호는 해시("#")로, URL에서는 뒤에 오는 조각에서 쿼리 문자열을 구분하는 데 사용됩니다.
반환된 문자열에서 키-값 쌍의 순서는 원래 쿼리에서와 정확히 동일합니다.
setQuery(), QUrl::setQuery(), QUrl::fragment() 및 Encoding 을참조하세요 .
QString QUrlQuery::queryItemValue(const QString &key, QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const
반환 값을 인코딩하기 위해 encoding 에 지정된 옵션을 사용하여 URL에서 key 키와 연관된 쿼리 값을 반환합니다. key 키를 찾을 수 없는 경우 이 함수는 빈 문자열을 반환합니다. 빈 값과 존재하지 않는 키를 구별해야 하는 경우 hasQueryItem()를 사용하여 먼저 키의 존재 여부를 확인해야 합니다.
key 키가 곱하기 정의된 경우 이 함수는 쿼리 문자열에 있거나 addQueryItem()를 사용하여 추가된 순서대로 가장 먼저 발견된 키를 반환합니다.
참고: 키는 퍼센트 인코딩 형식이 될 것으로 예상됩니다.
addQueryItem(), allQueryItemValues() 및 Encoding 를참조하세요 .
QList<std::pair<QString, QString>> QUrlQuery::queryItems(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const
encoding 에 지정된 옵션을 사용하여 항목을 인코딩하는 키와 값의 맵으로 URL의 쿼리 문자열을 반환합니다. 요소의 순서는 쿼리 문자열에서 찾거나 setQueryItems()로 설정한 것과 동일합니다.
setQueryItems() 및 Encoding 을참조하세요 .
QChar QUrlQuery::queryPairDelimiter() const
query()에서 쿼리 문자열을 재구성할 때 또는 setQuery()에서 구문 분석할 때 키-값 쌍을 구분하는 데 사용되는 문자를 반환합니다.
setQueryDelimiters() 및 queryValueDelimiter()도 참조하세요 .
QChar QUrlQuery::queryValueDelimiter() const
query()에서 쿼리 문자열을 재구성하거나 setQuery()에서 구문 분석할 때 키와 값 사이를 구분하는 데 사용되는 문자를 반환합니다.
setQueryDelimiters() 및 queryPairDelimiter()도 참조하세요 .
void QUrlQuery::removeAllQueryItems(const QString &key)
URL에서 키가 key 와 같은 모든 쿼리 문자열 쌍을 제거합니다.
참고: 키는 퍼센트 인코딩 형식이어야 합니다.
removeQueryItem()도 참조하세요 .
void QUrlQuery::removeQueryItem(const QString &key)
URL에서 키가 key 와 같은 쿼리 문자열 쌍을 제거합니다. 키가 key 와 같은 항목이 여러 개 있는 경우 쿼리 문자열에 있거나 addQueryItem()로 추가된 순서대로 첫 번째 항목을 제거합니다.
참고: 키는 퍼센트 인코딩 형식이어야 합니다.
removeAllQueryItems()도 참조하세요 .
void QUrlQuery::setQuery(const QString &queryString)
queryString 의 쿼리 문자열을 구문 분석하고 내부 항목을 여기에 있는 값으로 설정합니다. setQueryDelimiters ()로 구분 기호를 지정한 경우 이 함수는 기본 구분 기호 대신 해당 구분 기호를 사용하여 문자열을 구문 분석합니다.
query()도 참조하세요 .
void QUrlQuery::setQueryDelimiters(QChar valueDelimiter, QChar pairDelimiter)
URL의 쿼리 문자열에서 키와 값 사이, 키-값 쌍 사이를 구분하는 데 사용되는 문자를 설정합니다. 기본 값 구분 기호는 '='이고 기본 쌍 구분 기호는 '&'입니다.
valueDelimiter 는 키와 값을 구분하는 데 사용되며 pairDelimiter 는 키-값 쌍을 구분하는 데 사용됩니다. 쿼리 문자열의 키와 값의 인코딩된 표현에 이러한 구분 문자가 있는 경우 query()로 반환될 때 퍼센트 인코딩됩니다.
valueDelimiter 이 ','로 설정되어 있고 pairDelimiter 이 ';'인 경우 위의 쿼리 문자열은 대신 다음과 같이 표현됩니다:
http://www.example.com/cgi-bin/drawgraph.cgi?type,pie;color,green
참고: 비표준 구분 기호는 RFC 3986에서 "하위 구분 기호"라고 부르는 것 중에서 선택해야 합니다. 바로 그것입니다:
sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
다른 문자를 사용하면 지원되지 않으며 예기치 않은 동작이 발생할 수 있습니다. 이 메서드는 유효한 구분 기호를 전달했는지 확인하지 않습니다.
queryValueDelimiter() 및 queryPairDelimiter()도 참조하세요 .
void QUrlQuery::setQueryItems(const QList<std::pair<QString, QString>> &query)
이 QUrlQuery 객체의 항목을 query 으로 설정합니다. query 의 요소 순서는 그대로 유지됩니다.
참고: 이 메서드는 HTML 양식처럼 공백(ASCII 0x20)과 더하기("+") 기호를 동일하게 취급하지 않습니다. 공백을 더하기 기호로 표시해야 하는 경우 실제 더하기 기호를 사용하세요.
참고: 키와 값은 퍼센트 인코딩 형식이어야 합니다.
queryItems() 및 isEmpty()도 참조하세요 .
[noexcept]
void QUrlQuery::swap(QUrlQuery &other)
이 URL 쿼리 인스턴스를 other 로 바꿉니다. 이 작업은 매우 빠르며 실패하지 않습니다.
QString QUrlQuery::toString(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const
QUrlQuery 을 QString 으로 반환합니다. encoding 을 사용하여 반환 값의 URL 문자열 인코딩을 지정할 수 있습니다.
[noexcept]
QUrlQuery &QUrlQuery::operator=(QUrlQuery &&other)
이동-이 other 인스턴스를 QUrlQuery 인스턴스에 할당합니다.
QUrlQuery &QUrlQuery::operator=(const QUrlQuery &other)
쿼리 구분자를 포함하여 other QUrlQuery 객체의 내용을 복사합니다.
관련 비회원
[noexcept]
size_t qHash(const QUrlQuery &key, size_t seed = 0)
seed 을 사용하여 key 에 대한 해시값을 반환합니다.
[noexcept]
bool operator!=(const QUrlQuery &lhs, const QUrlQuery &rhs)
QUrlQuery 객체 rhs 가 lhs 와 같지 않으면 true
를 반환합니다. 그렇지 않으면 false
을 반환합니다.
operator==()도 참조하세요 .
[noexcept]
bool operator==(const QUrlQuery &lhs, const QUrlQuery &rhs)
QUrlQuery 객체 lhs 와 rhs 가 동일한 콘텐츠를 동일한 순서로 포함하고 동일한 쿼리 구분 기호를 사용하는 경우 true
를 반환합니다.
© 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.