“cpp/string/byte/memcmp”的版本间的差异
来自cppreference.com
小 |
|||
第1行: | 第1行: | ||
− | {{cpp/title| memcmp}} | + | {{cpp/title|memcmp}} |
{{cpp/string/byte/navbar}} | {{cpp/string/byte/navbar}} | ||
− | {{ddcl | header=cstring | | + | {{ddcl|header=cstring| |
int memcmp( const void* lhs, const void* rhs, std::size_t count ); | int memcmp( const void* lhs, const void* rhs, std::size_t count ); | ||
}} | }} | ||
− | 转译 {{ | + | 转译 {{|lhs}} 和 {{|rhs}} 所指向的对象为 {{c|unsigned char}} 数组,并比较这些数组的首 {{|count}} 个字节。按字典序比较。 |
− | 结果的符号是在被比较对象中相异的首对字节的值(都转译成 {{c|unsigned char}} | + | 结果的符号是在被比较对象中相异的首对字节的值(都转译成 {{c|unsigned char}})的差。 |
===参数=== | ===参数=== | ||
{{par begin}} | {{par begin}} | ||
− | {{par | lhs, rhs |指向要比较的内存缓冲区的指针}} | + | {{par|lhs, rhs|指向要比较的内存缓冲区的指针}} |
− | {{par | count |要检验的字节数}} | + | {{par|count|要检验的字节数}} |
{{par end}} | {{par end}} | ||
===返回值=== | ===返回值=== | ||
− | + | {{|lhs}} 中首个 字节(转译为 {{c|unsigned char}})小于 {{|rhs}} 中的对应字节 负值。 | |
− | + | {{|lhs}} 和 {{|rhs}} 的所有 {{|count}} 个字节相等 {{c|0}}。 | |
− | + | {{|lhs}} 中首个 字节大于 {{|rhs}} 中的对应字节 正值。 | |
===注解=== | ===注解=== | ||
− | 此函数读取[[ | + | 此函数读取[[/language/object|对象表示]],而非对象值,而且典型地只对无填充的可平凡复制对象有意义。例如 个 {{lc|std::string}} 或 {{lc|std::vector}} 类型对象间的 {{tt|memcmp()}} 将不比较 内容,而 个 {{c|struct {char c; int n;}}} 类型对象间的 {{tt|memcmp()}} 将比较填充字节, 值在 {{c|c}} 和 {{c|n}} 相同时 可以 。 |
===示例=== | ===示例=== | ||
{{example | {{example | ||
− | + | | | |
− | + | |code= | |
#include <iostream> | #include <iostream> | ||
#include <cstring> | #include <cstring> | ||
第34行: | 第34行: | ||
void demo(const char* lhs, const char* rhs, std::size_t sz) | void demo(const char* lhs, const char* rhs, std::size_t sz) | ||
{ | { | ||
− | std::cout << std::string(lhs, sz); | + | std::cout << std::string(lhs, sz) ; |
int rc = std::memcmp(lhs, rhs, sz); | int rc = std::memcmp(lhs, rhs, sz); | ||
− | if(rc == 0) | + | if (rc == 0) |
− | std::cout << " | + | std::cout << " "; |
− | else if(rc < 0) | + | else if (rc < 0) |
− | std::cout << " | + | std::cout << " " ; |
− | else if(rc > 0) | + | else if (rc > 0) |
− | std::cout << " | + | std::cout << " " << std::string(rhs, sz) << \n; |
− | + | ||
} | } | ||
第54行: | 第53行: | ||
demo(a1, a1, sizeof a1); | demo(a1, a1, sizeof a1); | ||
} | } | ||
− | + | |output= | |
− | abc | + | abc abd |
− | abd | + | abd abc |
− | abc | + | abc abc |
}} | }} | ||
===参阅=== | ===参阅=== | ||
{{dsc begin}} | {{dsc begin}} | ||
− | {{dsc inc | cpp/string/byte/dsc strcmp}} | + | {{dsc inc|cpp/string/byte/dsc strcmp}} |
− | {{dsc inc | cpp/string/byte/dsc strncmp}} | + | {{dsc inc|cpp/string/byte/dsc strncmp}} |
− | {{dsc see c | c/string/byte/memcmp}} | + | {{dsc see c|c/string/byte/memcmp}} |
{{dsc end}} | {{dsc end}} | ||
{{langlinks|de|en|es|fr|it|ja|pt|ru}} | {{langlinks|de|en|es|fr|it|ja|pt|ru}} |