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, nimm std::string . Ich würde so oder so std::string nehmen, die Arbeit damit ist um einiges komfortabler und weniger fehleranfällig als mit char -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



  • Rene,jedtke schrieb:

    ihr seit die besten

    www.seitseid.de



  • 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 ;p

    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.



  • 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.


Anmelden zum Antworten