C++ Problem: Wie konvertiere ich einen String in eine Zahl?

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • C++ Problem: Wie konvertiere ich einen String in eine Zahl?

      jo, siehe topic
      wie geht das von statten, gibts da schon ne vorgefertigte funktion wie z.b. unter delphi?
      da ich beim programmaufruf irgendwie nur strings mit übergeben kann
      int main (int argc, char *argv[]) {
      argv[x] is dann immer ein wort
      und ich wollte dort halt ne zahl übergeben
      und wenn ich da aber nur ein wort, also nen string bekomm, muss ich den zum rechnen und so ja umwandeln
      gibts da also schon was fertiges oder darf ich mir da selber eine headerdatei bzw ne funktion erbrühten die das leistet?

      für diese bräuchte ich dann wohl auch noch ein paar vorschläge, wie das am dümmsten zu lösen wäre

      mfg, martin
    • danke, allerdings hab ich nun ein prob, es geht net so wie ich es mir vorstelle, event habsch aber auch nur nen dicken denkfehler in meinem code

      maddin@omega:~/development/cpp/uebungen$ g++ -o zeichencode zeichencode.cc
      zeichencode.cc: In function `int main(int, wchar_t**)':
      zeichencode.cc:10: error: invalid conversion from `wchar_t*' to `int'

      C-Quellcode

      1. #include <iostream>
      2. #include <iomanip>
      3. #include <cstdlib>
      4. using namespace std;
      5. int main(int argc, wchar_t *argv[]) {
      6. int atoi (const wchar_t* argv[1]);
      7. int code;
      8. wchar_t zeichen;
      9. code = argv[1];
      10. zeichen = code;
      11. code = zeichen;
      12. cout << "Sie haben folgenden Zeichencode eingegeben: " << code << endl;
      13. cout << "Dieser entspricht diesem Unicode Zeichen: " << zeichen << endl
      14. << "bzw diesem HEX Wert: " << hex << uppercase << code << endl
      15. << "bzw diesem Octal Wert: " << oct << code << endl;
      16. return 0;
      17. }
      Alles anzeigen


      hat jemand ne idee?

      nachtrag: sieht ganz danach aus das das garkein normaler string is, aber was is char* bzw wchar_t* dann?
      und wie kann man es umwandeln? *fragenüberfragen*
    • lies dir nochma das beispiel durch das bei dem link von Knolle zu finden ist:

      C-Quellcode

      1. /* atoi example */
      2. #include <stdio.h>
      3. #include <stdlib.h>
      4. int main ()
      5. {
      6. int i;
      7. char szInput [256];
      8. printf ("Enter a number: ");
      9. gets ( szInput );
      10. i = atoi (szInput);
      11. printf ("Value entered is %d, and its double %d",i,i*2);
      12. return 0;
      13. }
      Alles anzeigen




      um deinen code mal ein wenig anzupassen:

      C-Quellcode

      1. #include <iostream>
      2. #include <iomanip>
      3. #include <cstdlib>
      4. // eventuell musst du die noch mit einbinden kann aber sein das die cstdlib reicht...
      5. // bin mir da grad nich so sicher...
      6. #include <stdlib.h>
      7. using namespace std;
      8. int main(int argc, wchar_t *argv[])
      9. {
      10. // die umwandlung von argv[1] in "int"
      11. int code;
      12. code = atoi(argv[1]);
      13. // den rest hmm naja lass ich mal unverändert..
      14. wchar_t zeichen;
      15. zeichen = code;
      16. code = zeichen;
      17. cout << "Sie haben folgenden Zeichencode eingegeben: " << code << endl;
      18. cout << "Dieser entspricht diesem Unicode Zeichen: " << zeichen << endl
      19. << "bzw diesem HEX Wert: " << hex << uppercase << code << endl
      20. << "bzw diesem Octal Wert: " << oct << code << endl;
      21. return 0;
      22. }
      Alles anzeigen
      42

      Im Herzen der Menschheit existiert eine Krankheit... Ihr Symptom ist Hass, Ihr Symptom ist Zorn. Ihr Symptom ist Krieg. Diese Krankheit ist die menschliche Emotion.
    • soweit war ich inzwischen in der schule und so auch schon gekommen, allerdings ergibt sich nun ein folgendes problem?
      wie gebe ich das zeichen aus?
      also für zeichen unter 256 gehts
      aber danach gibt aber zeichen 306 wird z.b. als das selbe zeichen wie 56 ausgeben, nämlich als 2
      obwohl ich als datentyp ein wchar_t habe und utf-8 als systemzeichensatz
      cout.put(zeichen) mag auch net so wirklich :/
    • ok, mom
      also das hab ich atm

      C-Quellcode

      1. #include <iostream>
      2. #include <iomanip>
      3. #include <cstdlib>
      4. #define PAUSE cin.sync();cin.clear();cin.get();
      5. using namespace std;
      6. int einlesen();
      7. int main(int argc, char* argv[]) {
      8. unsigned int code = 0;
      9. unsigned wchar_t zeichen = 0;
      10. switch (argc) { // Bei keinem übergebenen Parameter einen Parameter
      11. case 1: code = einlesen(); // einlesen, bei 2 Parametern Fehlermeldung
      12. break;
      13. case 2: code = atoi (argv[1]); // String in Int umwandeln (ENDLICH)
      14. break;
      15. }
      16. zeichen = code;
      17. code = zeichen;
      18. cout << "Sie haben folgenden Zeichencode eingegeben: " << code << endl;
      19. cout << "Dieser entspricht diesem Unicode Zeichen: ";
      20. cout.put(zeichen);
      21. cout << endl << "bzw diesem HEX Wert: " << hex << uppercase << code << endl
      22. << "bzw diesem Octal Wert: " << oct << code << endl;
      23. return 0;
      24. }
      25. int einlesen() {
      26. int zahl;
      27. cout << "Bitte einen Zeichencode eingeben: ";
      28. cin >> zahl;
      29. return zahl;
      30. }
      Alles anzeigen
    • zeichen = code;
      weißt dem wchar_t wert zeichen den intwert von code zu, welcher per kommandozeilenparameter eingelesen wurde
      code = zeichen; reduziert den intwert von code auf den von zeichen, falls zeichen überläuft (eigendlich nur bei char, nich bei wchar_t relevant)