Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/string/wide/wcsncmp"

From cppreference.com
< cpp‎ | string‎ | wide
(fmt)
m ({{c}}, headers sorted, fmt, langlinks)
 
(9 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{cpp/title| wcsncmp}}
+
{{cpp/title|wcsncmp}}
{{cpp/string/wide/sidebar}}
+
{{cpp/string/wide/navbar}}
{{ddcl | header=cstring |
+
{{ddcl|header=cwchar|
int wcsncmp( const wchar_t* lhs, const wchar_t* rhs, size_t count );
+
int wcsncmp( const wchar_t* lhs, const wchar_t* rhs, std::size_t count );
 
}}
 
}}
  
Compares at most {{tt|count}} wide characters of two null-terminated wide strings. The comparison is done lexicographically.
+
Compares at most {{c|count}} wide characters of two null-terminated wide strings. The comparison is done lexicographically.
 +
 
 +
The sign of the result is the sign of the difference between the values of the first pair of wide characters that differ in the strings being compared.
 +
 
 +
The behavior is undefined if {{c|lhs}} or {{c|rhs}} are not pointers to null-terminated strings.
  
 
===Parameters===
 
===Parameters===
{{param list begin}}
+
{{par begin}}
{{param list item | lhs, rhs | pointers to the null-terminated wide strings to compare}}
+
{{par|lhs, rhs|pointers to the null-terminated wide strings to compare}}
{{param list item | count | maximum number of characters to compare}}
+
{{par|count|maximum number of characters to compare}}
{{param list end}}
+
{{par end}}
  
 
===Return value===
 
===Return value===
 +
Negative value if {{c|lhs}} appears before {{c|rhs}} in lexicographical order.
  
negative value if {{tt|lhs}} is ''less than'' {{tt|rhs}}.
+
Zero if {{c|lhs}} and {{c|rhs}} compare equal.
  
{{cpp|0}} if {{tt|lhs}} is ''equal to'' {{tt|rhs}}.
+
Positive value if {{c|lhs}} appears after {{c|rhs}} in lexicographical order.
 
+
positive value if {{tt|lhs}} is ''greater than'' {{tt|rhs}}.
+
  
 
===Example===
 
===Example===
{{example cpp
+
{{example
|
+
|code=
| code=
+
#include <clocale>
| output=
+
#include <cwchar>
 +
#include <iostream>
 +
#include <locale>
 +
 
 +
void demo(const wchar_t* lhs, const wchar_t* rhs, int sz)
 +
{
 +
    int rc = std::wcsncmp(lhs, rhs, sz);
 +
    if (rc == 0)
 +
        std::wcout << "First " << sz << " characters of ["
 +
                  << lhs << "] equal [" << rhs << "]\n";
 +
    else if (rc < 0)
 +
        std::wcout << "First " << sz << " characters of ["
 +
                  << lhs << "] precede [" << rhs << "]\n";
 +
    else if (rc > 0)
 +
        std::wcout << "First " << sz << " characters of ["
 +
                  << lhs << "] follow [" << rhs << "]\n";
 +
}
 +
 
 +
int main()
 +
{
 +
    const wchar_t str1[] = L"안녕하세요";
 +
    const wchar_t str2[] = L"안녕히 가십시오";
 +
 
 +
    std::setlocale(LC_ALL, "en_US.utf8");
 +
    std::wcout.imbue(std::locale("en_US.utf8"));
 +
    demo(str1, str2, 5);
 +
    demo(str2, str1, 8);
 +
    demo(str1, str2, 2);
 +
}
 +
|output=
 +
First 5 characters of [안녕하세요] precede [안녕히 가십시오]
 +
First 8 characters of [안녕히 가십시오] follow [안녕하세요]
 +
First 2 characters of [안녕하세요] equal [안녕히 가십시오]
 
}}
 
}}
  
 
===See also===
 
===See also===
{{dcl list begin}}
+
{{dsc begin}}
{{dcl list template | cpp/string/wide/dcl list wcscmp}}
+
{{dsc inc|cpp/string/byte/dsc strncmp}}
{{dcl list template | cpp/string/wide/dcl list wmemcmp}}
+
{{dsc inc|cpp/string/wide/dsc wcscmp}}
{{dcl list template | cpp/string/wide/dcl list wcscoll}}
+
{{dsc inc|cpp/string/wide/dsc wmemcmp}}
{{dcl list end}}
+
{{dsc inc|cpp/string/wide/dsc wcscoll}}
 +
{{dsc see c|c/string/wide/wcsncmp}}
 +
{{dsc end}}
 +
 
 +
{{langlinks|de|es|fr|it|ja|pt|ru|zh}}

Latest revision as of 09:02, 10 June 2023

Defined in header <cwchar>
int wcsncmp( const wchar_t* lhs, const wchar_t* rhs, std::size_t count );

Compares at most count wide characters of two null-terminated wide strings. The comparison is done lexicographically.

The sign of the result is the sign of the difference between the values of the first pair of wide characters that differ in the strings being compared.

The behavior is undefined if lhs or rhs are not pointers to null-terminated strings.

Contents

[edit] Parameters

lhs, rhs - pointers to the null-terminated wide strings to compare
count - maximum number of characters to compare

[edit] Return value

Negative value if lhs appears before rhs in lexicographical order.

Zero if lhs and rhs compare equal.

Positive value if lhs appears after rhs in lexicographical order.

[edit] Example

#include <clocale>
#include <cwchar>
#include <iostream>
#include <locale>
 
void demo(const wchar_t* lhs, const wchar_t* rhs, int sz)
{
    int rc = std::wcsncmp(lhs, rhs, sz);
    if (rc == 0)
        std::wcout << "First " << sz << " characters of ["
                   << lhs << "] equal [" << rhs << "]\n";
    else if (rc < 0)
        std::wcout << "First " << sz << " characters of ["
                   << lhs << "] precede [" << rhs << "]\n";
    else if (rc > 0)
        std::wcout << "First " << sz << " characters of ["
                   << lhs << "] follow [" << rhs << "]\n";
}
 
int main()
{
    const wchar_t str1[] = L"안녕하세요";
    const wchar_t str2[] = L"안녕히 가십시오";
 
    std::setlocale(LC_ALL, "en_US.utf8");
    std::wcout.imbue(std::locale("en_US.utf8"));
    demo(str1, str2, 5);
    demo(str2, str1, 8);
    demo(str1, str2, 2);
}

Output:

First 5 characters of [안녕하세요] precede [안녕히 가십시오]
First 8 characters of [안녕히 가십시오] follow [안녕하세요]
First 2 characters of [안녕하세요] equal [안녕히 가십시오]

[edit] See also

compares a certain number of characters from two strings
(function) [edit]
compares two wide strings
(function) [edit]
compares a certain amount of wide characters from two arrays
(function) [edit]
compares two wide strings in accordance to the current locale
(function) [edit]
C documentation for wcsncmp