std::wcsncmp
来自cppreference.com
<tbody>
</tbody>
| 在标头 <cwchar> 定义
|
||
int wcsncmp( const wchar_t* lhs, const wchar_t* rhs, std::size_t count ); |
||
比较二个空终止宽字符串的至多 count 个字符。按字典序进行比较。
结果的正负号是被比较的字符串中首对相异的宽字符的值间的差的正负号。
若 lhs 或 rhs 不是指向空终止字符串的指针则行为未定义。
参数
| lhs, rhs | - | 指向要比较的空终止宽字符串的指针 |
| count | - | 要比较的最大字符数 |
返回值
若字典序中 lhs 先出现于 rhs 则为负值。
若 lhs 与 rhs 比较相等则为零。
若字典序中 lhs 后出现于 rhs 则为负值。
示例
运行此代码
#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 << "[" << lhs << "] 的前 " << sz << " 个字符等于 [" << rhs << "]\n";
else if (rc < 0)
std::wcout << "[" << lhs << "] 的前 " << sz << " 个字符前驱于 [" << rhs << "]\n";
else if (rc > 0)
std::wcout << "[" << lhs << "] 的前 " << sz << " 个字符后继于 [" << 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);
}
输出:
[안녕하세요] 的前 5 个字符前驱于 [안녕히 가십시오]
[안녕히 가십시오] 的前 8 个字符后继于 [안녕하세요]
[안녕하세요] 的前 2 个字符等于 [안녕히 가십시오]
参阅
| 比较两个字符串的一定量字符 (函数) | |
| 比较两个宽字符串 (函数) | |
| 比较来自两个数组的一定量宽字符 (函数) | |
| 按照当前本地环境比较两个宽字符串 (函数) | |
wcsncmp 的 C 文档
| |