QAnyStringView Class

QAnyStringView 클래스는 QString API의 읽기 전용 하위 집합을 사용하여 Latin-1, UTF-8 또는 UTF-16 문자열에 대한 통합 보기를 제공합니다. 더 보기...

Header: #include <QAnyStringView>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
이후: Qt 6.0

이 클래스는 매우 유사합니다.

이 클래스는 char16_t, QChar, const char16_t *, const char *, QByteArray, QByteArrayView, QString, QStringView, QUtf8StringView, QLatin1StringView매우 유사합니다.

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

공용 유형

공용 함수

QAnyStringView()
QAnyStringView(const Char (&)[N] string)
QAnyStringView(const Char *str)
QAnyStringView(const Container &str)
QAnyStringView(const QByteArray &str)
QAnyStringView(const QString &str)
QAnyStringView(std::nullptr_t)
QAnyStringView(const Char *first, const Char *last)
QAnyStringView(const Char *str, qsizetype len)
QChar back() const
(since 6.5) void chop(qsizetype n)
(since 6.5) QAnyStringView chopped(qsizetype n) const
const void *data() const
bool empty() const
(since 6.5) QAnyStringView first(qsizetype n) const
QChar front() const
bool isEmpty() const
bool isNull() const
(since 6.5) QAnyStringView last(qsizetype n) const
qsizetype length() const
(since 6.8) qsizetype max_size() const
qsizetype size() const
qsizetype size_bytes() const
(since 6.8) QAnyStringView &slice(qsizetype pos, qsizetype n)
(since 6.8) QAnyStringView &slice(qsizetype pos)
(since 6.5) QAnyStringView sliced(qsizetype pos) const
(since 6.5) QAnyStringView sliced(qsizetype pos, qsizetype n) const
QString toString() const
(since 6.5) void truncate(qsizetype n)
decltype(auto) visit(Visitor &&v) const

정적 공용 멤버

int compare(QAnyStringView lhs, QAnyStringView rhs, Qt::CaseSensitivity cs = Qt::CaseSensitive)
bool operator!=(const QAnyStringView &lhs, const QAnyStringView &rhs)
bool operator<(const QAnyStringView &lhs, const QAnyStringView &rhs)
(since 6.7) QDebug operator<<(QDebug d, QAnyStringView s)
bool operator<=(const QAnyStringView &lhs, const QAnyStringView &rhs)
bool operator==(const QAnyStringView &lhs, const QAnyStringView &rhs)
bool operator>(const QAnyStringView &lhs, const QAnyStringView &rhs)
bool operator>=(const QAnyStringView &lhs, const QAnyStringView &rhs)

상세 설명

QAnyStringView는 자신이 소유하지 않은 문자열의 연속된 부분을 참조합니다. 이는 QString 을 먼저 구성할 필요 없이 모든 종류의 문자열에 대한 인터페이스 유형으로 작동합니다.

QStringViewQUtf8StringView 과 달리 QAnyStringView는 다음 인코딩의 문자열을 보유할 수 있습니다: UTF-8, UTF-16 및 Latin-1. 후자가 지원되는 이유는 라틴-1이 UTF-8과 달리 UTF-16 데이터와 효율적으로 비교될 수 있기 때문입니다: 길이 불일치는 이미 문자열이 같을 수 없음을 의미합니다. UTF-8은 가변 길이 인코딩이기 때문에 UTF-8/UTF-16 비교에는 해당되지 않습니다.

문자열은 char, char8_t, QChar, ushort, char16_t 또는 (Windows와 같은 플랫폼에서 16비트 유형인 경우) wchar_t 의 배열(또는 QString, std::basic_string 등과 같은 배열 호환 데이터 구조)로 표현될 수 있습니다.

QAnyStringView는 인터페이스 유형으로 설계되었으며, 주요 사용 사례는 함수 매개변수 유형입니다. QAnyStringView를 자동 변수 또는 데이터 멤버로 사용하는 경우 문자열 뷰가 삭제된 데이터를 참조하지 않도록 참조된 문자열 데이터(예: QString)가 모든 코드 경로에서 QAnyStringView보다 오래 유지되도록 주의를 기울여야 합니다.

인터페이스 유형으로 사용할 경우 QAnyStringView를 사용하면 단일 함수가 다양한 문자열 데이터 소스를 받아들일 수 있습니다. 따라서 QAnyStringView를 받아들이는 하나의 함수는 5개의 함수 오버로드( QString, (const QChar*, qsizetype), QUtf8StringView, QLatin1StringView (위 참조) 및 QChar)를 대체하는 동시에 u8"Hello World", char8_t 문자열 리터럴과 같은 더 많은 문자열 데이터 소스를 함수에 전달할 수 있게 해줍니다.

Qt의 다른 곳과 마찬가지로, QAnyStringView는 QLatin1StringView 로 표시되지 않는 한 char 데이터가 UTF-8로 인코딩된 것으로 가정합니다.

그러나 Qt 6.4부터는 순수한 US-ASCII인 UTF-8 문자열 리터럴은 자동으로 라틴-1로 저장됩니다. 이는 런타임 오버헤드가 없는 컴파일 타임 검사입니다. 이 기능을 사용하려면 C++20 또는 최신 GCC로 컴파일해야 합니다.

QAnyStringView는 참조-대-const가 아닌 값으로 전달해야 합니다:

    void myfun1(QAnyStringView sv);        // preferred
    void myfun2(const QAnyStringView &sv); // compiles and works, but slower

QAnyStringView를 함수의 반환 값으로 사용할 수도 있지만 권장하지 않습니다. QUtf8StringView 또는 QStringView 이 함수 반환 값으로 더 적합합니다. QAnyStringView를 반환하는 함수를 호출하는 경우, 참조된 문자열 데이터를 유지하기 위해 함수가 약속하는 것보다 더 오래 QAnyStringView를 유지하지 않도록 각별히 주의하세요. 확실하지 않은 경우 toString()를 호출하여 QAnyStringView를 QString 로 변환하여 데이터에 대한 강력한 참조를 얻으세요.

QAnyStringView는 리터럴 타입입니다.

호환 가능한 문자 유형

QAnyStringView는 다양한 문자 유형에 대한 문자열을 허용합니다:

  • char (부호화 및 부호화되지 않은 문자열 모두)
  • char8_t (C++20만 해당)
  • char16_t
  • wchar_t (16비트 유형인 경우, 예: Windows)
  • ushort
  • QChar

8비트 문자 유형은 UTF-8 데이터( QLatin1StringView)로 표시되는 경우 제외)로 해석되며 16비트 문자 유형은 호스트 바이트 순서로 UTF-16 데이터로 해석됩니다( QString 과 동일).

크기 및 하위 문자열

모든 크기와 위치는 인코딩의 코드 단위로 계산됩니다(즉, UTF-16 대리 쌍은 QString 에서와 동일하게 이 함수의 목적에 따라 2로 계산되며, UTF-8 멀티바이트 시퀀스는 길이에 따라 2, 3 또는 4로 계산됩니다).

QUtf8StringViewQStringView참조하세요 .

멤버 유형 문서

QAnyStringView::difference_type

std::ptrdiff_t 의 별칭. STL과의 호환성을 위해 제공됩니다.

QAnyStringView::size_type

qsizetype의 별칭입니다. STL과의 호환성을 위해 제공됩니다.

멤버 함수 문서

[constexpr noexcept] QAnyStringView::QAnyStringView()

널 문자열 뷰를 구축합니다.

isNull()도 참조하세요 .

[constexpr noexcept] template <typename Char, size_t N> QAnyStringView::QAnyStringView(const Char (&)[N] string)

문자 문자열 리터럴 string 에 문자열 뷰를 구축합니다. 이 뷰는 첫 번째 Char(0) 또는 N 중 먼저 오는 것까지 배열을 포함합니다. 전체 배열이 필요한 경우 fromArray()를 대신 사용합니다.

string 는 이 문자열 뷰 객체의 수명 동안 유효해야 합니다.

이 생성자는 string 가 실제 배열이고 Char 가 호환되는 문자 유형인 경우에만 과부하 해결에 참여합니다.

Compatible Character Types참조하세요 .

[constexpr noexcept] template <typename Char> QAnyStringView::QAnyStringView(const Char *str)

str 에 문자열 뷰를 구축합니다. 길이는 첫 번째 Char(0) 을 검색하여 결정됩니다.

str 는 이 문자열 보기 객체의 수명 동안 유효해야 합니다.

nullptrstr 으로 전달하는 것은 안전하며 null 문자열 뷰가 생성됩니다.

이 생성자는 str 이 배열이 아니고 Char 이 호환 가능한 문자 유형인 경우에만 과부하 해결에 참여합니다.

isNull() 및 Compatible Character Types도 참조하세요 .

[constexpr noexcept] template <typename Container, QAnyStringView::if_compatible_container<Container> = true> QAnyStringView::QAnyStringView(const Container &str)

str 에 문자열 뷰를 구축합니다. 길이는 std::size(str) 에서 가져옵니다.

std::data(str) 이 문자열 뷰 객체의 수명 동안 유효해야 합니다.

이 생성자는 Containervalue_type 과 호환되는 문자 유형을 가진 컨테이너인 경우에만 과부하 해결에 참여합니다.

문자열 뷰는 std::size(str) == 0 에 해당하는 경우에만 비어 있습니다. 이 생성자가 널 문자열 뷰를 생성할 수 있는지 여부는 지정되지 않았습니다(std::data(str)nullptr 을 반환해야 합니다).

isNull() 및 isEmpty()도 참조하세요 .

[noexcept] QAnyStringView::QAnyStringView(const QByteArray &str)

str 에 문자열 뷰를 작성합니다. str 의 데이터는 UTF-8로 해석됩니다.

str.data() 는 이 문자열 보기 객체의 수명 동안 유효해야 합니다.

문자열 뷰는 str.isNull().

[noexcept] QAnyStringView::QAnyStringView(const QString &str)

str 에 문자열 보기를 구축합니다.

str.data() 는 이 문자열 보기 객체의 수명 동안 유효해야 합니다.

문자열 보기는 str.isNull().

[constexpr noexcept] QAnyStringView::QAnyStringView(std::nullptr_t)

널 문자열 뷰를 구축합니다.

isNull()도 참조하세요 .

[constexpr] template <typename Char, QAnyStringView::if_compatible_char<Char> = true> QAnyStringView::QAnyStringView(const Char *first, const Char *last)

길이 (last - first)를 사용하여 first 에 문자열 보기를 만듭니다.

[first,last) 범위는 이 문자열 보기 객체의 수명 동안 유효해야 합니다.

lastnullptr 인 경우 nullptrfirst 로 전달해도 안전하며, null 문자열 보기가 생성됩니다.

lastfirst 앞에 오거나 firstnullptr 이고 last 가 아닌 경우 동작이 정의되지 않습니다.

이 생성자는 Char 가 호환되는 문자 유형인 경우에만 과부하 해결에 참여합니다.

isNull() 및 Compatible Character Types도 참조하세요 .

[constexpr] template <typename Char, QAnyStringView::if_compatible_char<Char> = true> QAnyStringView::QAnyStringView(const Char *str, qsizetype len)

길이가 lenstr 에 문자열 보기를 작성합니다.

[str,len) 범위는 이 문자열 보기 객체의 수명 동안 유효해야 합니다.

len 가 0인 경우 nullptrstr 로 전달해도 안전하며, null 문자열 뷰가 생성됩니다.

len 이 음수이면 동작이 정의되지 않으며, 양수인 경우 strnullptr 이면 동작이 정의되지 않습니다.

이 생성자는 Char 이 호환 가능한 문자 유형인 경우에만 과부하 해결에 참여합니다.

isNull() 및 Compatible Character Types도 참조하세요 .

[constexpr] QChar QAnyStringView::back() const

문자열 보기의 마지막 문자를 반환합니다.

이 함수는 STL 호환성을 위해 제공됩니다.

경고: 빈 문자열 보기에서 이 함수를 호출하면 정의되지 않은 동작이 발생합니다.

front() 및 Sizes and Sub-Strings참조하세요 .

[constexpr, since 6.5] void QAnyStringView::chop(qsizetype n)

이 문자열 보기를 n 코드 포인트만큼 잘라냅니다.

*this = first(size() - n) 와 동일합니다.

참고: n < 0 또는 n > size()인 경우 동작이 정의되지 않습니다.

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

sliced(), first(), last(), chopped(), truncate(), slice() 및 Sizes and Sub-Strings참조하십시오 .

[constexpr, since 6.5] QAnyStringView QAnyStringView::chopped(qsizetype n) const

이 객체의 시작 부분부터 시작되는 길이 size() - n 의 부분 문자열을 반환합니다.

first(size() - n) 와 동일합니다.

참고: n < 0 또는 n > size()인 경우 동작이 정의되지 않습니다.

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

sliced(), first(), last(), chop(), truncate(), slice() 및 Sizes and Sub-Strings참조하십시오 .

[static noexcept] int QAnyStringView::compare(QAnyStringView lhs, QAnyStringView rhs, Qt::CaseSensitivity cs = Qt::CaseSensitive)

문자열 보기 lhs 를 문자열 보기 rhs 와 비교하여 lhsrhs 보다 작으면 음의 정수를, rhs 보다 크면 양의 정수를, 같으면 0을 반환합니다.

csQt::CaseSensitive (기본값)인 경우 비교는 대소문자를 구분하며, 그렇지 않은 경우 대소문자를 구분하지 않습니다.

operator==(), operator<() 및 operator>()도 참조하세요 .

[constexpr noexcept] const void *QAnyStringView::data() const

문자열 보기의 첫 번째 문자에 대한 상수 포인터를 반환합니다.

참고: 반환값으로 표시되는 문자 배열은 널로 끝나는 것이 아닙니다.

size_bytes()도 참조하세요 .

[constexpr noexcept] bool QAnyStringView::empty() const

이 문자열 보기가 비어 있는지 여부, 즉 size() == 0.

이 함수는 STL 호환성을 위해 제공됩니다.

isEmpty(), isNull() 및 size()도 참조하세요 .

[constexpr, since 6.5] QAnyStringView QAnyStringView::first(qsizetype n) const

이 문자열 보기의 첫 번째 n 코드 포인트가 포함된 문자열 보기를 반환합니다.

참고: n < 0 또는 n > size()인 경우 동작이 정의되지 않습니다.

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

last(), sliced(), chopped(), chop(), truncate(), slice() 및 Sizes and Sub-Strings참조하십시오 .

[constexpr] QChar QAnyStringView::front() const

문자열 보기에서 첫 번째 문자를 반환합니다.

이 함수는 STL 호환성을 위해 제공됩니다.

경고: 빈 문자열 보기에서 이 함수를 호출하면 정의되지 않은 동작이 발생합니다.

back() 및 Sizes and Sub-Strings참조하세요 .

[constexpr noexcept] bool QAnyStringView::isEmpty() const

이 문자열 뷰가 비어 있는지 여부, 즉 size() == 0.

이 함수는 다른 Qt 컨테이너와의 호환성을 위해 제공됩니다.

empty(), isNull() 및 size()도 참조하십시오 .

[constexpr noexcept] bool QAnyStringView::isNull() const

이 문자열 뷰가 null인지, 즉 data() == nullptr 인지 여부를 반환합니다.

이 함수는 다른 Qt 컨테이너와의 호환성을 위해 제공됩니다.

empty(), isEmpty() 및 size()도 참조하십시오 .

[constexpr, since 6.5] QAnyStringView QAnyStringView::last(qsizetype n) const

이 문자열 보기의 마지막 n 코드 포인트가 포함된 문자열 보기를 반환합니다.

참고: n < 0 또는 n > size()인 경우 동작이 정의되지 않습니다.

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

first(), sliced(), chopped(), chop(), truncate(), slice() 및 Sizes and Sub-Strings참조하십시오 .

[constexpr noexcept] qsizetype QAnyStringView::length() const

size()와 동일합니다.

이 함수는 다른 Qt 컨테이너와의 호환성을 위해 제공됩니다.

size()도 참조하십시오 .

[constexpr noexcept, since 6.8] qsizetype QAnyStringView::max_size() const

이 함수는 STL 호환성을 위해 제공됩니다.

문자열 뷰가 이론적으로 표현할 수 있는 최대 요소 수를 반환합니다. 실제로는 시스템에서 사용할 수 있는 메모리 양에 따라 이보다 훨씬 적은 수가 반환될 수 있습니다.

참고: 반환되는 값은 현재 사용되는 문자 유형에 따라 계산되므로 서로 다른 두 뷰에서 이 함수를 호출하면 다른 결과가 반환될 수 있습니다.

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

[constexpr noexcept] qsizetype QAnyStringView::size() const

이 문자열 보기의 크기를 인코딩의 코드 포인트로 반환합니다.

empty(), isEmpty(), isNull(), size_bytes() 및 Sizes and Sub-Strings참조하세요 .

[constexpr noexcept] qsizetype QAnyStringView::size_bytes() const

이 문자열 보기의 크기를 반환하지만 코드 포인트가 아닌 바이트 단위로 반환합니다.

이 함수는 해싱 또는 직렬화를 위해 data()와 함께 사용할 수 있습니다.

이 함수는 STL 호환성을 위해 제공됩니다.

size() 및 data()도 참조하세요 .

[constexpr, since 6.8] QAnyStringView &QAnyStringView::slice(qsizetype pos, qsizetype n)

이 문자열 보기가 pos 위치에서 시작하여 n 코드 포인트까지 확장되도록 수정합니다.

참고: pos < 0, n < 0 또는 pos + n > size()인 경우 동작이 정의되지 않습니다.

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

sliced(), first(), last(), chopped(), chop(), truncate() 및 Sizes and Sub-Strings참조하십시오 .

[constexpr, since 6.8] QAnyStringView &QAnyStringView::slice(qsizetype pos)

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

이 문자열 보기가 pos 위치에서 시작하여 끝까지 확장되도록 수정합니다.

참고: pos < 0 또는 pos > size()인 경우 동작이 정의되지 않습니다.

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

sliced(), first(), last(), chopped(), chop(), truncate() 및 Sizes and Sub-Strings참조하십시오 .

[constexpr, since 6.5] QAnyStringView QAnyStringView::sliced(qsizetype pos) const

이 객체의 pos 위치에서 시작하여 끝까지 확장되는 문자열 보기를 반환합니다.

참고: pos < 0 또는 pos > size()인 경우 동작이 정의되지 않습니다.

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

first(), last(), chopped(), chop(), truncate(), slice() 및 Sizes and Sub-Strings참조하십시오 .

[constexpr, since 6.5] QAnyStringView QAnyStringView::sliced(qsizetype pos, qsizetype n) const

위치 pos 에서 시작하는 이 문자열 보기의 n 코드 포인트를 포함하는 문자열 보기를 반환합니다.

참고: pos < 0, n < 0 또는 pos + n > size()인 경우 동작이 정의되지 않습니다.

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

first(), last(), chopped(), chop(), truncate(), slice() 및 Sizes and Sub-Strings참조하십시오 .

QString QAnyStringView::toString() const

이 문자열 뷰 데이터의 심층 복사본을 QString 로 반환합니다.

반환 값은 이 문자열 보기가 널인 경우에만 널 QString 이 됩니다.

[constexpr, since 6.5] void QAnyStringView::truncate(qsizetype n)

이 문자열 보기를 n 코드 포인트로 잘라냅니다.

*this = first(n) 와 동일합니다.

참고: n < 0 또는 n > size()인 경우 동작이 정의되지 않습니다.

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

sliced(), first(), last(), chopped(), chop() 및 Sizes and Sub-Strings참조하십시오 .

[constexpr] template <typename Visitor> decltype(auto) QAnyStringView::visit(Visitor &&v) const

이 문자열 보기가 참조하는 문자열 데이터의 인코딩에 따라 QUtf8StringView, QLatin1String 또는 QStringView 을 사용하여 v 을 호출합니다.

이것이 QAnyStringView 을 받는 대부분의 함수가 인코딩별 함수로 분기하는 방식입니다:

void processImpl(QLatin1String s) { ~~~ }
void processImpl(QUtf8StringView s) { ~~~ }
void processImpl(QStringView s) { ~~~ }

void process(QAnyStringView s)
{
    s.visit([](auto s) { processImpl(s); });
}

여기서는 QAnyStringView 객체와 람다의 매개변수 모두에 동일한 이름인 s 을 재사용하고 있습니다. 이는 관용적 코드이며 다음과 같이 더 복잡한 상황에서 방문() 호출을 통해 객체의 신원을 추적하는 데 도움이 됩니다.

bool equal(QAnyStringView lhs, QAnyStringView rhs)
{
    // assuming operator==(QAnyStringView, QAnyStringView) didn't, yet, exist:
    return lhs.visit([rhs](auto lhs) {
        rhs.visit([lhs](auto rhs) {
            return lhs == rhs;
        });
    });
}

visit()를 사용하려면 모든 람다 인스턴스의 반환 유형이 동일해야 합니다. 유형이 다르면 공통 유형이 있더라도 컴파일 오류가 발생합니다. 이 문제를 해결하려면 람다에 명시적 반환 유형을 사용하거나 반환 문에서 형 변환을 하면 됩니다:

// wrong:
QAnyStringView firstHalf(QAnyStringView input)
{
    return input.visit([](auto input) {   // ERROR: lambdas return different types
        return input.sliced(0, input.size() / 2);
    });
}
// correct:
QAnyStringView firstHalf(QAnyStringView input)
{
    return input.visit([](auto input) -> QAnyStringView { // OK, explicit return type
        return input.sliced(0, input.size() / 2);
    });
}
// also correct:
QAnyStringView firstHalf(QAnyStringView input)
{
    return input.visit([](auto input) {
        return QAnyStringView(input.sliced(0, input.size() / 2)); // OK, cast to common type
    });
}

관련 비회원

[noexcept] bool operator!=(const QAnyStringView &lhs, const QAnyStringView &rhs)

[noexcept] bool operator<(const QAnyStringView &lhs, const QAnyStringView &rhs)

[noexcept] bool operator<=(const QAnyStringView &lhs, const QAnyStringView &rhs)

[noexcept] bool operator==(const QAnyStringView &lhs, const QAnyStringView &rhs)

[noexcept] bool operator>(const QAnyStringView &lhs, const QAnyStringView &rhs)

[noexcept] bool operator>=(const QAnyStringView &lhs, const QAnyStringView &rhs)

lhsrhs 을 비교하는 연산자.

compare()도 참조하세요 .

[since 6.7] QDebug operator<<(QDebug d, QAnyStringView s)

s 를 디버그 스트림 d 으로 출력합니다.

d.quotedString()true 인 경우 문자열이 어떤 인코딩으로 되어 있는지를 나타냅니다. 문자열 데이터만 원한다면 visit()를 다음과 같이 사용합니다:

s.visit([&d) (auto s) { d << s; });

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

QAnyStringView::visit()도 참조하십시오 .

© 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.