Zuweisungsproblem mit string[index] und integer



  • Vielen Dank erstmal für deine Antwort Werner Salomon 🙂

    Ich habe den Quellcode angepasst, wie du es beschrieben hast. Dennoch bekomme ich immer noch 2 Fehler.

    Tipp: stelle sicher, dass 'hiprec_S' und 'S' dieselbe Länge haben - z.B. durch das Voranstellen von '0'en vor den kürzeren String.

    Wird schon zu einem füheren Zeitpunkt durchgeführt und funktioniert auch.

    Hier die zwei Fehler, die immer noch auftreten:

    ----------------------------------
    c:\dokumente und einstellungen\daniel\eigene dateien\programmierung\c++\class_hiprec\hiprec.cpp(112) : error C2664: 'atoi' : Konvertierung des Parameters 1 von 'char' in 'const char *' nicht moeglich
    Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    c:\dokumente und einstellungen\daniel\eigene dateien\programmierung\c++\class_hiprec\hiprec.cpp(112) : error C2664: 'atoi' : Konvertierung des Parameters 1 von 'char' in 'const char *' nicht moeglich
    Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    StrU.cpp
    Fehler beim Ausführen von cl.exe.

    haupt.exe - 2 Fehler, 0 Warnung(en)
    ----------------------------------

    Die Fehler versteh ich, denk ich: Er kann die Zwei Zeichen, auf die in Zeile 9 per Indizes zugegriffen wird nicht in einen integer-Wert umwandeln. Ich weis aber nicht, wie ich das beheben kann.



  • Das liegt daran das atoi mit C-Strings arbeitet, also mit Char-Arrays. Du hast in dem Fall aber nur einen Char. Wenn du sicher bist das es sich dabei um eine Ziffer handeln müsste, kannst du einfach (meinString[index]-'0') rechnen, um die Ziffer als int zu bekommen.



  • Danke, aber das wird doch wohl nicht die einzige Möglichkeit sein, oder?
    Es müsste doch auch möglich sein, eine korrekte explizite Umwandlung vorzunehmen und sich nicht nur nach dem Compiler zu richten.



  • Wenn du unbedingt atoi nehmen willst, erstelle einen char-Array der Größe 2 und pack an die erste Stelle deinen char und an die zweite '\0' oder eben nur 0 und rufe damit atoi auf.



  • Naja, dann doch lieber das erste.

    Vielen Danke, hat super funktioniert!

    🙂 👍

    Edit: damit ich keinen neuen Thread aufmachen muss:
    Gibt es eine Möglichkeit, sich ausgeben zu lassen, wie viel Zeit ein Funktionsdurchlauf oder ein kompletter Programmdurchlauf gedauert hat? (in ms oder so)

    Danke



  • Ja gibt's nennt sich Profiler



  • Und wo bekomm ich sowas her (kostenlos wär schön), bzw. wie verwende ich ihn?



  • AMD Code Analyzer.



  • von dem tool hab ich schon gelesen hier im forum, bloß finde ich keinen link zum download und auch über google keine Downloadmöglichkeit.



  • Das Problem ist hald, dass du dich anmelden musst dort, dass du es donwloaden kannst. 😉

    http://developer.amd.com/tools/Pages/default.aspx

    Alles klar?


Anmelden zum Antworten