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。是时候告诉教程的作者和老师们把“文本文字”和“字符串”之间的东西称为“文本文字”。这将消除大部分的困惑和头痛的新手!