Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 按字典顺序比较字符串_C++_String_Compare - Fatal编程技术网

C++ 按字典顺序比较字符串

C++ 按字典顺序比较字符串,c++,string,compare,C++,String,Compare,我认为如果我使用诸如“>”和“之类的运算符来比较std::string-s,像这样的会起作用。但是,您正在比较字符串文本。要进行比较,您需要使用它们初始化std::string或使用strcmp: if(std::string("aa") > std::string("bz")) cout<<"Yes"; if(std::string(“aa”)>std::string(“bz”))cout“bz”)cout比较st

我认为如果我使用诸如“>”和“之类的运算符来比较
std::string
-s,像这样的会起作用。但是,您正在比较字符串文本。要进行比较,您需要使用它们初始化std::string或使用strcmp:

if(std::string("aa") > std::string("bz")) cout<<"Yes";

if(std::string(“aa”)>std::string(“bz”))cout“bz”)cout比较
std::string
-s这样的会起作用。但是您正在比较字符串文本。要进行比较,您需要使用它们初始化std::string或使用strcmp:

if(std::string("aa") > std::string("bz")) cout<<"Yes";
if(std::string(“aa”)>std::string(“bz”)cout“bz”)cout您正在比较类型为
char const*
的“基本”字符串

以下内容与您的示例基本相同:

char const * s1 = "aa";
char const * s2 = "bz";
if ( s1 > s2 ) cout<<"Yes";
#include <iostream>
#include <cstring>


void display(char *lhs, char *rhs, int result)
{
    if(result > 0)
        std::cout << rhs << " precedes " << lhs << std::endl;
    else if (result < 0)
        std::cout << lhs << " precedes " << rhs << std::endl;
    else
        std::cout << lhs << " and " << rhs << " are same" << std::endl;
}

int main()
{
    char lhs[] = "aa";
    char rhs[] = "bz";
    int result;

    result = strcmp(lhs,rhs);
    display(lhs,rhs,result);

    result = strcmp(lhs,lhs);
    display(lhs,lhs,result);

    return 0;
}
char const*s1=“aa”;
字符常量*s2=“bz”;
如果(s1>s2)不能您正在比较类型为
char const*
的“基本”字符串

以下内容与您的示例基本相同:

char const * s1 = "aa";
char const * s2 = "bz";
if ( s1 > s2 ) cout<<"Yes";
#include <iostream>
#include <cstring>


void display(char *lhs, char *rhs, int result)
{
    if(result > 0)
        std::cout << rhs << " precedes " << lhs << std::endl;
    else if (result < 0)
        std::cout << lhs << " precedes " << rhs << std::endl;
    else
        std::cout << lhs << " and " << rhs << " are same" << std::endl;
}

int main()
{
    char lhs[] = "aa";
    char rhs[] = "bz";
    int result;

    result = strcmp(lhs,rhs);
    display(lhs,rhs,result);

    result = strcmp(lhs,lhs);
    display(lhs,lhs,result);

    return 0;
}
char const*s1=“aa”;
字符常量*s2=“bz”;
如果(s1>s2)不能您可以使用
include
头文件中包含的
strcmp()
函数。
strcmp()
逐字符比较两个字符串。该过程将继续,直到它达到
NULL
或其中一个字符串变为不相等(字符变为不相等)。 例如:

char const * s1 = "aa";
char const * s2 = "bz";
if ( s1 > s2 ) cout<<"Yes";
#include <iostream>
#include <cstring>


void display(char *lhs, char *rhs, int result)
{
    if(result > 0)
        std::cout << rhs << " precedes " << lhs << std::endl;
    else if (result < 0)
        std::cout << lhs << " precedes " << rhs << std::endl;
    else
        std::cout << lhs << " and " << rhs << " are same" << std::endl;
}

int main()
{
    char lhs[] = "aa";
    char rhs[] = "bz";
    int result;

    result = strcmp(lhs,rhs);
    display(lhs,rhs,result);

    result = strcmp(lhs,lhs);
    display(lhs,lhs,result);

    return 0;
}
您可以使用
strcmp()
函数,该函数包含在
#include
头文件中。
strcmp()
逐字符比较两个字符串。该过程将继续,直到达到
NULL
或其中一个字符串变为不相等(字符变为不相等)。 例如:

char const * s1 = "aa";
char const * s2 = "bz";
if ( s1 > s2 ) cout<<"Yes";
#include <iostream>
#include <cstring>


void display(char *lhs, char *rhs, int result)
{
    if(result > 0)
        std::cout << rhs << " precedes " << lhs << std::endl;
    else if (result < 0)
        std::cout << lhs << " precedes " << rhs << std::endl;
    else
        std::cout << lhs << " and " << rhs << " are same" << std::endl;
}

int main()
{
    char lhs[] = "aa";
    char rhs[] = "bz";
    int result;

    result = strcmp(lhs,rhs);
    display(lhs,rhs,result);

    result = strcmp(lhs,lhs);
    display(lhs,lhs,result);

    return 0;
}

只需要显式转换一个操作数。谢谢,这就是我所需要知道的。@KonradRudolph true。谢谢。我想补充一点,因为C++14可以使用->
if(“aa”s>“bz”)编写更短的操作数
@churill谢谢你的添加,我已经在我的回答中反映了这一点。只需要显式转换一个操作数。谢谢你,这就是我需要知道的一切。@KonradRudolph true。谢谢你。我想补充一点,因为C++14可以使用->
if(“aa”s>“bz”)编写更短的操作数
@churill谢谢你的添加,我在回答中已经反映了这一点。问题是“aa”和“bz”不是字符串s。现在是时候告诉教程作者和老师们把“文本文字”和“字符串”之间的东西称为“文本文字”了。这将消除新手们的大部分困惑和头痛!问题是“aa”和“bz”是什么“不是字符串s。是时候告诉教程的作者和老师们把“文本文字”和“字符串”之间的东西称为“文本文字”。这将消除大部分的困惑和头痛的新手!