Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Länge eines chars ermitteln?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
21.04.2004, 17:20 Uhr
~psyki
Gast


Hi,
Ich brauche mal in einer Konsolenanwendung die länge einer eingegebenen Zahl.
Es sind nur Zahlen aus dem dualen Zahlensystem (1 und 0).

Das sah bei mir dann so aus:


C++:
#include <iostream.h>
using namespace std;

int main()
{
int eingabe;
cin >> eingabe;
cout << strlen(eingabe) << endl;
return 0;
}



Die Fehlermeldung ist dann:
error C2664: 'strlen': Konvertierung des Parameters 1 von 'char' in 'const char *' nicht möglich
Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat

Als Entwicklungsumgebung benutze ich M$ Visual C++ std.
Ich bedanke mich schonmal im voraus für eure Hilfe.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.04.2004, 17:39 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


dann solltest du eingabe auch als character array anlegen und nicht als integer
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.04.2004, 17:47 Uhr
typecast
aka loddab
(Operator)


Allerdings könnte man auch ein bischen kreativ sein und eine kleine Funktion schreiben:


C++:
int numberLength(int n)
{
    int count = 1;
    while ((n/=10) > 0)
        ++count;
    return count;
}



Und schon hat man die Länge der Zahl.... (hoffe ich. Das ist ungetestet)
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.04.2004, 18:04 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



C++:
int numberLength(int n){return n?1+numberLength(n/10):0;}


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.04.2004, 18:05 Uhr
psyki



huch ... da hatte ich mich verschrieben.
ich hab da aber auch char stehen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
21.04.2004, 18:09 Uhr
Pablo
Supertux
(Operator)


Aber dann müsstes du als char* eingabe deklarieren.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
21.04.2004, 18:28 Uhr
ao

(Operator)



Zitat:
Pablo postete
Aber dann müsstes du als char* eingabe deklarieren.

... oder besser noch

char eingabe [1024];

oder irgend ne andere Größe. Ein nackiger Pointer ohne Speicher dahinter ist der sicherste Weg zur Access Violation.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
21.04.2004, 18:33 Uhr
Pablo
Supertux
(Operator)


Stimmt, aber wenn du C++ nimmst, dann nimm gleich std::string!
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
21.04.2004, 18:44 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


bei nem std::string sollte dann in diesem falle size() recht nützlich sein
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
21.04.2004, 19:07 Uhr
DerSchwarzeSchlumpf




C++:

int const MAX_DEFINED_INPUT = 128;

using std::cout;
using std::endl;
using std::cin;

int main()
{
  //reserviern eines char-arrays von 128 Elementen + das abschließende
  // '\0' char

  char* eingabe = new char[MAX_DEFINED_INPUT+1];
  
  //wenn du auch die leerzeichen einlesen willst ist getline zu empfehlen da
  //hast du jetzt dann die komplette eingabe bis zum terminierenden Enter drin

  cin.getline(eingabe, MAX_DEFINED_INPUT, '\n');

  cout << strlen(eingabe) << endl;

  //noch irgendetwas mit der eingabe machen

  doSomethingWithEingabe();

  //abschließend den reservierten Speicher freigeben

  delete eingabe;

  return(-1);
}
  


Dieser Post wurde am 21.04.2004 um 19:10 Uhr von DerSchwarzeSchlumpf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: