• Hallo Besucher!

    Du bist neu im Forum? Dann registriere dich hier, um Diskussionen beizutreten oder eigene Themen zu erstellen. Für die Registrierung ist es erforderlich, dass du einen Spielaccount bei Die Stämme hast.

    Andernfalls kannst du dich hier direkt einloggen.

    Falls du dein Passwort vergessen hast, kannst du hier ein neues Passwort anfordern.

C++ Anfängerproblem

  • Themenstarter DeletedUser99036
  • Startdatum

DeletedUser99036

Gast
Habe gerade Angefangen C++ zu lernen, benutze "Pelles C" als Editor + Compiler,
folgendes Programm konnte ich problemlos als exe kompilieren :



leeres programm, jedoch :

#include<iostream>
using namespace std;

int main()
{
cout<<"Hallo Welt\n";
cin.get();
}



funktioniert nicht, fehler der kommt :

Erzeugen von hello_world.obj.
C:\Users\Thean\Documents\Pelles C Projects\hello_world\hello_world.c(1): fatal error #1035: Can't find include file <iostream>.
*** Fehlercode: 1 ***
Fertig.




Pelles C:
http://www.smorgasbordet.com/pellesc/

ps. Ich werde dieses Tutorial befolgen :
http://tutorial.schornboeck.net/hello_world.htm


wenn jemand was besseres hat kann er es auch gerne hier schreiben ;)
 

DeletedUser61508

Gast
Probier es mal so:

Code:
#include <iostream.h>

main()
{
    cout << "Hello World!\n";
    cin.get();
}

Quelle
 

DeletedUser

Gast
Ist doch eig. auch klar. Die Datei Bibliothek heißt iostream.h, deshalb muss das .h auch noch ran. Soviel mal von mir als nicht C++-ler :)
 

DeletedUser99036

Gast
gut nun kommt anderer fehler ^^

Erzeugen von hello_world.obj.
C:\PellesC\Include\iostream.h(36): fatal error #1035: Can't find include file <stdcomp.h>.
*** Fehlercode: 1 ***
Fertig.


>.>
 

DeletedUser27114

Gast
Welches Programm bzw, compiler nimmst du denn zum Programmieren?

Es könnte sein, dass die Pfade zu den Header Dateien nicht richtig eingestellt sind.
 

DeletedUser27114

Gast
Ah ok.
Davon habe ich noch nie gehört. o_O
Da kann ich nichts zu sagen.

Versuche das selbe mal mit Code::Blocks, VisualStudio oder DevC++ dann weisst du ob es am Code oder an dem Pelles liegt.
 

Hölzi22

Gast
mh, also meine dateien sind 2-8kb groß! o_O
und das ist sogar noch eines der großen "programmen"
1252259257Unbenannt.gif
 
Zuletzt bearbeitet:

DeletedUser99036

Gast
und wenn ich auf "Release" umstelle bei builden ist sie noch 280kb groß ^^

bei dem code :


#include<iostream>
#include<string>

using namespace std;

int main()
{
string test="Hallo!";

cout<<test;
}
 

Hölzi22

Gast
ok...
ich bin schon leise *hust*


trotzdem klärt es immernoch nicht das problem das seine dateien so groß sind oder?

das ist doch nicht normal? o_O
 

DeletedUser

Gast
Probier es mal so:

Code:
#include <iostream.h>

main()
{
    cout << "Hello World!\n";
    cin.get();
}
iostream.h War noch nie im Standard. Vor 11 Jahren hat man festgelegt, dass das Ding iostream heißt. Kein Standardheader hat die Endung .h. Manche Compiler unterstützen das aber noch.
Den Rückgabetypen von main wegzulassen ist auch nicht erlaubt.

Zur Größe des Binaries: Die Runtime wird anscheinend statisch gelinkt, deswegen kommt da so ein Riesenteil raus.
 

DeletedUser82294

Gast
übrigens sollte:



das gleiche sein wie:




weil dahaiz vorher soetwas angedeutet hat^^

so um hier mal klarheit zu schaffen...

Korrekt ist
PHP:
#include<iostream>
#include<string>
using namespace std;

Veraltet, aber noch von einigen compilern unterstützt ist
PHP:
#include<iostream.h>
#include<string.h>
das wird von den kompilern nur noch aus KOMPATIBILITÄTSGRÜNDEN geduldet, und kommt aus der zeit als es noch keine Namensräume gab!
 

DeletedUser99036

Gast
arbeite mittlerweile mit Code::Blocks und bin auch schon ein schönes Stück gekommen, Variablen,funktionen,arrays,schleifen,if usw.

Leider endet mein Tutorial hier ..

Möchte mit Dateioperatoren weitermachen und evt. habt ihr ja ein Tut welches dies behandelt?

Wäre sehr froh wenn mir jemand helfen könnte ;)
 

DeletedUser99036

Gast
habe ein zwar nich sehr gutes tut gefunden aber mind. hab ich eins ^^



Frage :


#include <iostream>
#include<fstream>
#include<string>

using namespace std;

Code:
int main()
{
    string dateiname;
    string dateiinhalt;

    cout<<"Bitte etwas eingeben : ";
    cin>>dateiinhalt;
    ofstream datei("C:\\test.txt", ios::out);
    if(datei)
    {
    datei<<dateiinhalt;
    datei.close();
    }
}



wenn ich z.b. jetzt eingebe im Programm : Hallo ich bins , dann kommt nur das "Hallo" in die Textdatei?!


wenn ich aber oben :
string dateiinhalt="Hallo ich bins"; schreibe dann kommt der ganze Satz, wo ist der fehler?
 

DeletedUser

Gast
Code:
#include <iostream>
#include<fstream>
#include<string>

using namespace std;

int main()
{
    string dateiname;
    char dateiinhalt[100];

    cout << "Bitte etwas eingeben : ";
    cin.getline(dateiinhalt, sizeof(dateiinhalt));
    ofstream datei("C:\\test.txt", ios::out);
    if(datei)
    {
        datei << dateiinhalt;
        datei.close();
    }

    return 0;
}

Ich bin zwar kein Pro in C++, aber probiers mal hiermit.
 

DeletedUser82294

Gast
Ich bin zwar kein Pro in C++, aber probiers mal hiermit.

so sollte es gehen.

Das problem liegt an dem cin das einlesen wird nämlich beim ersten leerzeichen abgebrochen.

Und mal so als Tipp, wenn du ein gutes C++ Buch suchst kann ich dir nur Einstieg in C++ von Arnold Willemer empfehlen. Vorallem für einsteiger ist es sehr empfehlenswert, da der Nutzen der OOP im gegensatz zu vielen onlinetoutorials sehr gut erklärt wird.
 

DeletedUser

Gast
char dateiinhalt[100];
Nicht gekapselte rohe Arrays sind "böse".
Code:
#include <iostream>
#include <fstream>
#include <string>

int main()
{
    std::string dateiinhalt;
    getline(std::cin, dateiinhalt);
    std::ofstream datei("C:/test.txt");
    datei << dateiinhalt;
    // datei.close() ist überflüssig, dank RAII, btw.
}
An sich nur stilistische Veränderungen (wenn man mal davon absieht, dass man jetzt auch mehr als 99 Zeichen eingeben kann), die sich ein Anfänger aber direkt angewöhnen sollte. Ich habe noch nie in produktivem Code ungekapselte Arrays, Zeiger, whatever benutzt. ;)

Code:
#include <iostream>
#include <fstream>
#include <iterator>
#include <algorithm>
#include <iomanip>

int main()
{
    std::ofstream datei("C:/test.txt");
    std::cin >> std::noskipws;
    std::copy(std::istream_iterator<char>(std::cin), std::istream_iterator<char>(), std::ostream_iterator<char>(datei));
}
Das liest solange ein, bis der User EOF auslöst.
Andrei Alexandrescu hat die mal kommentiert mit: "Something, somewhere, went terribly wrong." :)

Edit 2:
Und mal so als Tipp, wenn du ein gutes C++ Buch suchst kann ich dir nur Einstieg in C++ von Arnold Willemer empfehlen.
Ich fänds seltsam, wenn Galileocomputing ausnahmsweise mal ein brauchbares Buch rausbringen würde. Bisher war jedes Buch was ich von denen gelesen habe einfach voller sachlicher Fehler. Ein Blick ins Inhaltsverzeichnis zeigt auch, die wirklich wichtigen Bereiche von C++ werden zu spät angesprochen und irgendwie als Unterpunkt abgetan. "Weitere Sprachelemente von C++". Zur Generischen Programmierung sind gerade mal 9 Seiten vorhanden, obwohl das vermutlich das komplexeste und größte Gebiet in C++ ist. Darüber gibts ganze Bücher. Ich kann mir nicht vorstellen, dass man einen Einblick auf 9 Seiten hinbekommt. Wenn der Autor das geschafft hat, ist er genial.
 
Zuletzt bearbeitet von einem Moderator:

DeletedUser82294

Gast
Ich fänds seltsam, wenn Galileocomputing ausnahmsweise mal ein brauchbares Buch rausbringen würde. Bisher war jedes Buch was ich von denen gelesen habe einfach voller sachlicher Fehler. Ein Blick ins Inhaltsverzeichnis zeigt auch, die wirklich wichtigen Bereiche von C++ werden zu spät angesprochen und irgendwie als Unterpunkt abgetan. "Weitere Sprachelemente von C++". Zur Generischen Programmierung sind gerade mal 9 Seiten vorhanden, obwohl das vermutlich das komplexeste und größte Gebiet in C++ ist. Darüber gibts ganze Bücher. Ich kann mir nicht vorstellen, dass man einen Einblick auf 9 Seiten hinbekommt. Wenn der Autor das geschafft hat, ist er genial.

klar ist das buch nicht vollständig(heißt ja EINSTIEG in c++),
aber für anfänger ist das optimal, k villeicht stimmt die reihenfolge nicht so ganz, aber dafür ist alles was behandelt wird bestens erklärt.

vor allem die OOP das war für mich immer eine sache die man nicht unbedingt braucht, bis ich dieses Buch gelesen habe.
 

DeletedUser

Gast
klar ist das buch nicht vollständig(heißt ja EINSTIEG in c++),
Haste auch Recht.
aber für anfänger ist das optimal, k villeicht stimmt die reihenfolge nicht so ganz, aber dafür ist alles was behandelt wird bestens erklärt.
Leider macht die Reihenfolge einiges aus. Nummel z.B. hat in einem anderen Thread einmal gesagt, dass er eigentlich nie die Standardbibliothek nutzt. Er hat C++ von A bis Z gelesen, der Aufbau ist praktisch der gleiche. Das zeigt, dass die Reihenfolge gerade für Anfänger unheimlich wichtig ist. Wers falsch lernt, machts auch noch lange weiter falsch. (Ich nehme mich da übrigens nicht aus, ich hatte auch nicht gerade einen optimalen Einstieg in C++. Ich kam von C her, da macht man ja gerne noch alles selbst.)
 
Zuletzt bearbeitet von einem Moderator:
Oben