if > problem
-
Guten Tag,
Ich bin gerade ein updater am programmieren,
ich habe ein kleines problem unzwar will ich die vorhandene version mit der neuen version vergleichen z.b ist die größer als 1.1.1 läd er diese runter.ich sehe einfach den wald vor lauter bäume nicht
char update[1024]; ifstream update1("update.txt"); update1 >>update; if(update > "1.1.1") {
-
Du vergleichst die Adressen der
char-Zeiger. Wenn du einen lexikographischen Vergleich möchtest, nimmstd::string. Ich würde so oder sostd::stringnehmen, die Arbeit damit ist um einiges komfortabler und weniger fehleranfällig als mitchar-Arrays.Ich bin mir allerdings nicht sicher, ob der Vergleich zweier Zeichenketten überall immer gleich definiert ist. Ich würde sonst die einzelnen Versionsziffern extrahieren und als Integer vergleichen.
-
Nimm std::string statt char[] oder std::strcmp statt <. So vergleichst Du nämlich nur die Adressen des jeweils ersten Zeichen-Objekts.
-
ok danke hat Funktioniert
ihr seit die besten
-
-
Nexus schrieb:
Ich bin mir allerdings nicht sicher, ob der Vergleich zweier Zeichenketten überall immer gleich definiert ist. Ich würde sonst die einzelnen Versionsziffern extrahieren und als Integer vergleichen.
Selbst wenn: Mit Zeichenketten ist "1.1.10" < "1.1.9".
-
Dasd schrieb:
Selbst wenn: Mit Zeichenketten ist "1.1.10" < "1.1.9".
Ansichtssache bei uns wäre 1.1.10 > 1.1.9 weil dies = 1.1.09 ist.
-
HighLigerBiMBam schrieb:
Dasd schrieb:
Selbst wenn: Mit Zeichenketten ist "1.1.10" < "1.1.9".
Ansichtssache bei uns wäre 1.1.10 > 1.1.9 weil dies = 1.1.09 ist.
Dann ist aber "1.1.100" < "1.1.99".
Kommt wohl darauf an, welche Anforderungen der OP hat.
-
Dasd schrieb:
Dann ist aber "1.1.100" < "1.1.99".
Kommt wohl darauf an, welche Anforderungen der OP hat.Nein man
"1.1.100" > "1.1.99" weil die 1.1.99 dann = 1.1.099 ist. Es wird einfach nur blump hochgezählt ;p
-
HighLigerBiMBam schrieb:
Dasd schrieb:
Dann ist aber "1.1.100" < "1.1.99".
Kommt wohl darauf an, welche Anforderungen der OP hat.Nein man
"1.1.100" > "1.1.99" weil die 1.1.99 dann = 1.1.099 ist. Es wird einfach nur blump hochgezählt ;pIch glaube, was die Kollegen dir erklären wollen ist, daß der normale Zeichenketten-Vergleich zu "dumm" ist, um sowas darzustellen. Das heißt, um die Reihenfolge "1.1.10" > "1.1.9" zu erhalten, mußt du den String selber auseinandernehmen und vergleichen.
-
CStoll schrieb:
Ich glaube, was die Kollegen dir erklären wollen ist, daß der normale Zeichenketten-Vergleich zu "dumm" ist, um sowas darzustellen. Das heißt, um die Reihenfolge "1.1.10" > "1.1.9" zu erhalten, mußt du den String selber auseinandernehmen und vergleichen.
Was ich vorausgesetzt habe.