Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.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++中的两个字符串如下: if(s1 <= s2) //do stuff_C++_String_Comparison_Operator Keyword_Relational - Fatal编程技术网

与关系运算符的字符串比较(长度不同) 我比较C++中的两个字符串如下: if(s1 <= s2) //do stuff

与关系运算符的字符串比较(长度不同) 我比较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

该语句的计算结果将为true,并执行条件语句中的任何操作。比较发生在8和1之间。数字的所有ASCII表示都是从48(0)-57(9)递增的,显然是1<8


我曾经认为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