与关系运算符的字符串比较(长度不同) 我比较C++中的两个字符串如下: if(s1 <= s2) //do stuff
该语句的计算结果将为true,并执行条件语句中的任何操作。比较发生在8和1之间。数字的所有ASCII表示都是从48(0)-57(9)递增的,显然是1<8与关系运算符的字符串比较(长度不同) 我比较C++中的两个字符串如下: if(s1 <= s2) //do stuff,c++,string,comparison,operator-keyword,relational,C++,String,Comparison,Operator Keyword,Relational,该语句的计算结果将为true,并执行条件语句中的任何操作。比较发生在8和1之间。数字的所有ASCII表示都是从48(0)-57(9)递增的,显然是1
我曾经认为C++考虑了字符串长度,但这是错误的。有人会解释为什么C++语言设计的角度不考虑长度吗? 长度实际上是通过词典比较隐式考虑的,在调用小于
时使用词典比较将长度考虑在内,但不是以您期望的方式。在字符串比较中,每个字符串的第一个字符首先相互比较。如果它们相等,则比较第二个字符,依此类推。因此,在您的示例中,要比较的第一个字符是“1”和“8”8'更大
如果将“10.72”与“1.87”进行比较,则第一个字符将相等,因此下一步是将“0”与“.”进行比较
如果要比较数值,必须将字符串转换为数字表示形式,否则必须编写自己的比较器,将字符串视为数字。我希望这能说明一些问题。dfri比我先给出一个答案,但是如果你想进行上述比较,我建议首先使用std::stof
转换为浮点,然后比较浮点,例如float f1=std::stof(s1)
然后if(f1@jonnyd42乐意帮忙!
s1 = "10.72";
s2 = "8.87";
"10.72" < "10.721" // true
"10.72" == "10.72" // true (by string comparison as well as lexicographically equalness)
"10.7211" < "10.7212" // true