Сравнение строк с использованием реляционных операторов C ++ - PullRequest
0 голосов
/ 07 ноября 2018

Как получается при сравнении строк ...

string e = "11" 
string f = "102" 
string s = "8" 


e > s - this statement is false 
f > s - and this is also false 

Почему эти утверждения являются ложными? А какие правила при сравнении двух строк друг с другом?

1 Ответ

0 голосов
/ 07 ноября 2018

Использование реляционных операторов в строках в C / C ++ будет просто сравнивать адреса памяти строк. Очевидно, "11" и "8" занимают 2 разные области памяти, поэтому это может быть ложным, если только адрес, где хранится "11", не будет храниться по адресу, большему "8", но это случайно.

Имейте в виду, что вы можете использовать string::compare, однако он сравнивает ASCII-код строк. Поскольку "1" (код ASCII 49) меньше "8" (код ASCII 56), оно все равно будет ложным. Вам необходимо использовать stoi для преобразования строки в целое число, а затем сравнить целые числа.

...