я сравнивал две строки в C++ следующим образом:Сравнение строк с реляционными операторами (различной длины)
if(s1 <= s2)
//do stuff
Я забыл тонкости сравнения строк и быстро понял, что в следующем случае:
s1 = "10.72";
s2 = "8.87";
Заявление будет оцениваться как истинное и делать все, что находится внутри условного. Сравнение происходит между 8 и 1. Все ASCII-представления чисел в порядке возрастания от 48 (0) - 57 (9) и, очевидно, 1 < 8.
Я думал, что C++ учитывает длину строки но это неверно. Кто-нибудь подумает, почему длина не учитывается с точки зрения дизайна языка C++?
dfri избил меня, чтобы ответить, однако, если вы хотите сделать вышеприведенное сравнение, я бы рекомендовал сначала преобразовать в плавающую точку с помощью 'std :: stof', а затем сравнить плавающие точки, например. 'float f1 = std :: stof (s1)' then 'if (f1 <= f2)'. – silvergasp