PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ios und cpp



DaveDuddly
17-11-2004, 22:13
Hallo Leute,
bin was Cpp-Programmierung angeht ein Neuling.
Habe jetzt auch gleich eine Frage!

Quellcode:


#include <iostream.h>
#include <string.h>


int main()
{
int index;
float Entfernung;
char Buchstabe;
char Name[25];

index = -23;
Entfernung = 12.345;
Buchstabe = 'X';
strcpy(Name, "Eva Musterfrau");

cout << "Der Wert von index ist " << index << "\n";
cout << "Der Wert von Enfernung ist " << Entfernung << "\n";
cout << "Der Wert von Buchstabe ist " << Buchstabe << "\n";
cout << "Der Wert von Name ist " << Name << "\n";

index = 31;

cout << "Der dezimale Wert von index ist " << dec << index << "\n";
//cout.setf(ios::oct, ios::basefield);
cout << "Der oktale Wert von index ist " << oct << index << "\n";
//cout.setf(ios::hex, ios::basefield);
cout << "Der hexadezimale Wert von index ist " << hex << index << "\n";
cout << "Der Buchstabe Buchstabe ist " << (char)Buchstabe << "\n";

cout << "Geben Sie eine Dezimalzahl ein --> ";
cin >> index;
cout << "Der hexadezimale Wert der Eingabe ist " << index << "\n";

return 0;
}


// Ergebnis beim Ausfhren
//
// Der Wert von index ist -23
// Der Wert von Entfernung ist 12.345
// Der Wert von Buchstabe ist X
// Der Wert von Name ist Eva Musterfrau
// Der dezimale Wert von index ist 31
// Der oktale Wert von index ist 37
// Der hexadezimale Wert von index ist 1f
// Der Buchstabe Buchstabe ist X
// Geben Sie eine Dezimalzahl ein --> 999
// Der hexadezimale Wert der Eingabe ist 3e7


Wenn ich dieses Proggy unter Kdev3.0.2 und KDE3.2.1 compiliere bekomme
ich eine Fehlermeldung des Compilers das "die Variablen dec, oct und hex nicht
deklariert sind"!!
Das sind aber meines Wissens Manipulatoren ohne Parameter die in der StdLib
in der Header-Datei <ios> definiert sind.
Wenn ich aber die auskommentierten Zeilen

//cout.setf(ios::oct, ios::basefield);
//cout.setf(ios::hex, ios::basefield);

einfüge und die dec, oct und hex "Variablen" aus den cout-Zeilen entferne, klappt's!!!

Kann mir das jemand erklären?

Selbst mit #include <ios> und using namespace std klappt es nicht.

Für Eure Bemühungen vielen Dank im voraus.

DaveDuddly

panzi
18-11-2004, 00:30
Versuch ios_base::hex, siehe: http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/classstd_1_1ios__base-members.html

locus vivendi
18-11-2004, 15:10
#include <iostream.h>

Daraus entfernst du am besten die Endung ".h". Das inkludieren mit .h ist deprecated. Mit Angabe des std Namespaces sollte es dann klappen, sprich:
#include <iostream>

int main()
{
std::cout << std::hex << 15 << std::endl;
}

... etwas in der Art sollte dann funktionieren.

Versuch ios_base::hex, [...]
Aber Vorsicht: "std::cout << std::ios_base::hex << 15;" kompiliert zwar mindestens mit dem GCC, aber tut nicht das Gewünschte (Es wird nicht der Manipulator gerufen, sondern der Wert der Variable "ios_base::hex" ausgegeben).

panzi
18-11-2004, 18:39
(Es wird nicht der Manipulator gerufen, sondern der Wert der Variable "ios_base::hex" ausgegeben).
Oh.


(zehn zeichen)

DaveDuddly
18-11-2004, 20:09
Hallo locus vivendi,

vielen Dank für Deinen Hinweis mit dem "*.h"!
Habe die Header-Endung entfernt und "using namspace std" eingefügt, und schon geht's!!!!
Jetzt ist die Welt wieder in Ordnung.

Gruß
DaveDuddly