Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » [Error] iostream.h: No such file or directory

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 <
000
08.05.2022, 20:14 Uhr
Data2006



Hallo zusammen,

vor vielen Jahren ca. '97-98 habe ich mal C und C++ gelernt. Hatten Borland C++ 4.5.
Leider mußte ich bei C++ fast komplett die Segeln streichen.
Mit meiner alten Lernunterlage wage ich jetzt einen neuen Versuch.

Ich habe hier ein kleines Beispiel:

C++:
#include <iostream.h>
#include <iomanip.h>

int main(void)
{
    int z=123;
    double x=3.14159, y=10.0;
    
    std::cout << std::setw(3) << oct << z << std::endl;
    std::cout << std::setw(4) << hex << z << std::endl;
    
    std::cout << std::setprecision(3) << std::setfill('*');
    std::setiosflags(ios::showpoint | ios::fixed);
    
    std::cout << "x hat den Wert: " << std::setw(10) << x << std::endl;
    std::cout << "y hat den Wert: " << std::setw(10) << y << std::endl;
}


Ich benutze Dev-C++ 5.11. Habe auch noch Visual Studio 2019 Enterprise. Aber da funktioniert das einfache Anlegen und Starten einer Quell-CPP-Datei nicht. Oder ich weiß nicht wie ich ein Programm starte! Anlegen über Neues Projekt klappt auch. Ist mir aber zu kompliziert zu erstellen. Gibts da ne einfache Anleitung? Bei Borland C++ 4.5 brauchte ich nur das Programm einzugeben und in der Symbolleiste auf den Blitz (glaube das wars) klicken. Dann wurde alles kompiliert und ausgeführt.
Bei dem Dev-C++ klicke ich auch nur auf das Symbol kompilieren und Ausführen oder drücke F11

Zurück zum Beispiel. Das läuft so nicht. Compiler meldet das er iostream.h und iomanip.h nicht includieren kann. OK, soweit gehts noch. Ich mache dann iostream und iomanip - ohne .h.
Das geht dann. Programm läuft jetzt trotzdem nicht. Und ich weiß nicht wieso.

C++:
[Error] 'oct' was not declared in this scope


OK, mache ich überall noch ein std:: davor. Wieder Error:

C++:
13    36    C:\Users\Heiko\Desktop\Unbenannt2.cpp    [Error] 'ios' has not been declared



Liegt das am Compiler? Muß ich den anders einstellen? Bei Borland C++ ging es, soweit ich mich erinnern kann.

Bis hierhin war es erst mal. Kommen noch weitere Beispiele und Verständnisfragen.

Vielen lieben Dank,
Heiko


PS: Wir hatten beim Borland... auf das std:: verzichtet. Ging auch so. Brauchten auch kein

C++:
using namespace std;

einzugeben. Schätze mal das liegt an den Einstellungen von der Borland...IDE?!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.05.2022, 20:16 Uhr
Data2006



PS2: Ein return 0; braucht der Compiler auch nicht?!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.05.2022, 08:47 Uhr
f.-th.



Um 2000 hat sich bei C++ sehr viel getan.
C++ wurde umfangreicher und leistungsfähiger.
C++ wird immer noch weiter entwickelt.

Wollt ihr z.B. eine einfachere String-Verarbeitung solltet ihr am Compiler C++14, also C++ Stand 2014, oder aktueller einstellen. Die Umsetzungen des C++ Standarts waren in der Regel compilerabhängig.
Folgender Code sollte auf C++ Compilern, die etwa ab 2005 im Umlauf waren laufen.


C++:
#include <iostream>
#include <iomanip>

int main(void)
{
    int z=123;
    double x=3.14159, y=10.0;
    
    std::cout << std::setw(3) << std::oct << z << std::endl;
    std::cout << std::setw(4) << std::hex << z << std::endl;
    
    std::cout << std::setprecision(3) << std::setfill('*');
    std::setiosflags(std::ios::showpoint | std::ios::fixed);
    
    std::cout << "x hat den Wert: " << std::setw(10) << x << std::endl;
    std::cout << "y hat den Wert: " << std::setw(10) << y << std::endl;
}



Nein ein
C++:
  return
braucht es beim
C++:
  int main(void )
nicht - wird automatisch passend vom Compiler ergänzt. Es sei denn ihr wollt am Programmende noch Infos ausgeben.

Dein Borland 4.5 ist noch alte c++ Schule.
Es gibt oder gab einen halbwegs aktuellen nackten Compiler zum kostenlosen download vom Nachfolge-Umnehmen: Version: 10.2 Namen müsste ich selbst erst suchen.

Aktueller sind andere, z.B. Visual Studio oder die g++. Bei den g++ gib es Packete mit Editoren -die sind für Anfänger einfacher zu starten.
Bei den Dev weiß ich nicht ob da schon der Compiler aktuell genug ist? Es gibt da auch noch Code::Blocks und weitere.

Ich spiele z.Z. mit dem Notepad++ und verschiedenen Compilern. Zum Einrichten sollten schon ein paar Programmierkenntnisse da sein - Profi muss nicht sein.

Dieser Post wurde am 10.05.2022 um 08:52 Uhr von f.-th. editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.05.2022, 09:09 Uhr
f.-th.



Nachtrag:
Versuche aktuellere Lernunterlagen zu nutzen, es sein denn du musst alten C++ Code bearbeiten.
Also Lehrmaterial, welches nach 2015 erstellt worden ist, erspart dir viele Altlasten aus C.

Stichworte: Vector und weitere Container ersparen viel von der Speicherverwaltung "zu Fuss".
Auch die String-Nutzung ist dann wesentlich einfacher.

Leider ist viel Lehrmaterial von nach 2015 auch noch "alte Schule".

Fall du mit Englisch halbwegs klar kommst, schau mal bei :stackoverflow.com rein. Die zeigen dir schon ob du dich etwas bemüht hast und wirklich relevante Fragen hast. Manchmal werden da verschiedene Lösungen zu einem Programmier-Problem gezeigt.

Dieser Post wurde am 10.05.2022 um 09:18 Uhr von f.-th. editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
11.05.2022, 00:16 Uhr
Data2006



Hallo.

Vielen Dank für die Hilfe. Es klappt jetzt.

Klar ich habe ne alte Lernunterlage. Wollte auch nur mal durchgehen ob ich C++ jetzt kapiere. Da gab es Verständnisprobleme (bei dem Klassenkonzept, Vererbung, Mehrfachvererbung, Inline-Funktionen usw.)
Ich denke ich werde bald abbrechen.

Noch paar Fragen habe ich noch. Wollte mir bischen den Quelltext von setw(), cout, cin, showpoint angucken. Per Suche über Windows Explorer finde ich die aber nicht. Auch die Headerdatei iostream kann ich nicht finden. Wo verstecken die sich vor mir?

Wenn ich mit clog was ausgeben will, wird das vom Compiler direkt ausgegeben. Laut Lernunterlage wird erst ausgegeben wenn der Puffer voll ist oder flush; aufgerufen wird.
Hat sich das auch geändert?


C++:
#include <iostream>

#define MAX(a, b) ((a) > (b)? (a) : (b))

int main (void)
{
    int i, x=39, y=45;
    
    i=MAX(x++, y++);
    
    std::cout << "MAX: " << i << "\tx: " << x << "\ty: " << y << std::endl;
}



Warum ist hier a und im MAX in zusätzlichen ()?
Laut Lernunterlage ist Ausgabe: MAX: 46 x: 40 y: 47
Mein Programm zeigt da was anderes an: MAX: 46 x: 40 y:47 Ich hätte das anders interpretiert:
i=39 >45 ? 39:45. Und dann erst x++ und y++.
Wo ist da mein Denkfehler?
(Soll laut Unterlagen Seiteneffekte sein. Verstehe ich nicht.)

Dann gehts weiter mit Defaultwerte für Funktionsargumente:

C++:
#include <iostream>

void funk(int=3, double=3.1415926535, char* ="Hallo");

int main(void)
{
    funk();
    funk(5);
    funk(6, 20.12);
    funk(11, 31.29, "Guten Tag");
}

void funk(int a, double b, char *c)
{
    std::cout << "1. Argument: " << a << std::endl;
    std::cout << "2. Argument: " << b << std::endl;
    std::cout << "3. Argument: " << c << std::endl << std::endl;
}


Das konnte ich schon mal umsetzen. Ich erhalte in Zeile 3 (void funk(int=3, double=3.1415926535, char* ="Hallo") eine Warnung:

Code:
3    53    C:\Users\Heiko\Desktop\Unbenannt3.cpp    [Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]


Ist da char* ="Hallo" falsch?

Bereichsauflösungsoperator:

C++:
#include <iostream>

int zahl=141;

int main(void)
{
    int zahl=366;
    
    std::cout << "Zahl global: " << ::zahl << std::endl;
    std::cout << "Zahl lokal: " << zahl << std::endl;
}


Bei ::zahl wird die Variable außerhalb der Funktionen?! Sonst zahl in main()?!
Was passiert, wenn ich ne for-Schleife auch mit zahl anlege:

C++:
for (int zahl=1; zahl <=10; zahl++)
{
      std::cout << zahl << std::endl;



Zu guter Letzt: Inline-Funktionen.

C++:
#include <iostream>

inline int max(int a, int b)
{
    return a>b ? a:b;
}

int main(void)
{
    int i, x=39, y=45;
    
    i=max(x++, y++);
    
    std::cout << "max: " << i << std::endl;
    std::cout << "x: " << x << std::endl;
    std::cout << "y: " << y << std::endl;
}


Jetzt stimmts: i=45 x=40 und y=46.
Wann nehme ich Makro, inline oder normale Funktion?

So, das wars erst mal für heute.

Vielen lieben Dank für Eure Antworten.

LG und gute Nacht, Heiko
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
13.05.2022, 22:11 Uhr
f.-th.




C++:
#define MAX(a, b) ((a) > (b)? (a) : (b))


Diese und ähnliche defines hat man in den 1990ern öfter in C gesehen. In aktuellen C++ würde ich das weniger erwarten.
Gib die Zeile mal in eine Suchmaschine ein. Da gibt es Diskussionen das die Lösung eventuell nicht eindeutig ist?
Deine Unterlagen schreiben da Seiteneffekte - also gehen die auch nicht von "normalem" C++ aus.

Haben die in deinen Unterlage nicht beschrieben was die vermuten was das Programm in welcher Folge machen soll?



C++:
char* ="Hallo");

sagt die Warnung: nutze die modernen C++ Strings
Aus Kompatibilität wird es der Compiler wahrscheinlich noch übersetzen, aber C++ String ist der bessere, einfachere und weniger fehleranfällige Weg.

Der nächste Punkt vermeide gleichnamige Variablen mit unterschiedlicher Bedeutung. Modere Compiler haben bezüglich der Zeichen einer Variablen wenig Einschränkung.
Was glaubst du, wenn du ohne Vorwarnung in einem Quelltext einen Fehler suchst, bei dem gleichnamige Variablen vertauscht wurden?
Mit dem for probier es.

MfG
f.-th.

Dieser Post wurde am 13.05.2022 um 22:12 Uhr von f.-th. editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: