繁体   English   中英

在 C++ 中,我如何使用像 C 中的 strncmp 函数?

[英]In C++, how do i use like strncmp function in C?

在 C++ 中,C 中没有像strncmp()这样的字符串函数strncmp() ???

例如

string str1 = "abc";
string str2 = "ab";

str2.compare(0,1,str1) == 0 

是否可以??

您可以直接比较std::string

if (str1 == str2)

要比较长度为 2,请使用compare

if (str2.compare(0, 2, str1) == 0)

如果包含相应的 C 头文件,您也可以在 C++ 中使用 C 函数,例如使用string.h ,包括<cstring>

std::string已重载其 '==' 运算符。 只要if (a == b)有效。 有趣的是,即使(a < b)工作并应用词法排序。

编辑:毕竟 TE 似乎询问字符串长度的相等性,而不是它们的实际字母:

if (str1.length() == str2.length())
{

}

是的,类 std::string 为您的用例声明了成员函数 compare,例如

int compare(size_type pos1, size_type n1, basic_string_view<charT, traits> sv) const;

这是一个演示程序,展示了如何使用这个重载的成员函数。

#include <iostream>
#include <string>

int main() 
{
    std::string str1 = "abc";
    std::string str2 = "ab";

    std::cout << str2.compare( 0, 1 ,str1) << '\n';
    std::cout << str1.compare(  0, 2 , str2) << '\n';
    std::cout << str2.compare( str1 ) << '\n';
    std::cout << str2.compare( 1, 1, str1 ) << '\n';

    return 0;
}

程序输出是

-2
0
-1
1

因此,如果两个字符串相等,则该函数返回 0。如果第一个字符串小于第二个字符串,则该函数返回一个负值。 否则函数返回一个正值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM