Beispiel in C++ Primer will nicht

11/09/2013 13:52 Katzenstreu#1
Edit: Gut, ich verstehe. Solange der input eine Zahl ist, ist die Aussage Wahr und while ist am arbeiten. Schreibe ich nun jetzt etwas anderes, dann ist die Aussage falsch und while beendet sich. Aber nun eine Frage: Wieso sagt das Buch nichts von dem?

Soo,
ich habe mir fest vorgenommen C++ zu lernen :)
Heute kam C++ Primer an (Ich habe mich ernsthaft gefreut :p) und habe bereits angefangen, das Buch zu durchpforsten.
Nun bis ich auf Seite 15, und dort steht dieses Beispiel:

Code:
#include <iostream>
int main()
{
	int sum = 0, value = 0;
	while (std::cin >> value)
		sum += value;
	std::cout << "Value is: " << sum << std::endl;
	return 0;
}
Nun, wenn ich jetzt die Zahlen 3 4 5 6 eingebe,
sollte 18 rauskommen.
Aber, wenn ich eine Zahl eingebe, passiert einfach nichts.
Ich finde, dass das oben sowieso keinen Sinn ergibt, das liegt aber wahrscheinlich daran, dass ich ja erst bei diesem Kapitel bin.

Kann mir jemand helfen und sagen, was dort falsch gemacht worden ist?
Und da ich ja dabei bin :p
In Microsoft Visual C++ bin ich gezwungen, immer "#include "stdafx.h"" zu setzen.
Wieso?
11/09/2013 14:21 davydavekk#2
Enter your numbers then enter a letter to stop the while loop (because a char can't fit into a int variable).

What don't you understand in this code ?

stdafx.h basically precompile all the headers files listed in it, for further reading about it : [Only registered and activated users can see links. Click Here To Register...]
11/09/2013 14:24 Acin™#3
Quote:
Originally Posted by Katzenstreu View Post
In Microsoft Visual C++ bin ich gezwungen, immer "#include "stdafx.h"" zu setzen.
Wieso?
Wenn du die einzelnen header selbst einbinden möchtest, lösch den header stdafx.h und die präprozessor direktive einfach.
11/09/2013 14:26 Katzenstreu#4
Quote:
Originally Posted by davydavekk View Post
Enter your numbers then enter a letter to stop the while loop (because a char can't fit into a int variable).

What don't you understand in this code ?

stdafx.h basically precompile all the headers files listed in it, for further reading about it : [Only registered and activated users can see links. Click Here To Register...]
I now understand it, and I realised that also after a few minutes (:/).
I just didn't now that with the letter, because the book didn't do it in the example.
That's why I didn't know what is going on. :rolleyes:

So, do I always have to put #input tdafx.h in the header?
11/09/2013 14:30 Schlüsselbein#5
Nein, entfern beim Erstellen des Projekts den Haken bei use precompiled headers.
11/09/2013 14:34 Acin™#6
Quote:
Originally Posted by Schlüsselbein View Post
Nein, entfern beim Erstellen des Projekts den Haken bei use precompiled headers.
Die VS std lib wird immer eingebunden.

Wie ich schon schrieb:
Quote:
Originally Posted by -Rainbow View Post
Wenn du die einzelnen header selbst einbinden möchtest, lösch den header stdafx.h und die präprozessor direktive einfach.
11/09/2013 14:49 Schlüsselbein#7
Was hat die std lib mit den vorkompilierten Headern zu tun?
11/09/2013 14:56 Acin™#8
Quote:
Originally Posted by Schlüsselbein View Post
Was hat die std lib mit den vorkompilierten Headern zu tun?
Etwas, dass du nie verstehen wirst.
Du weißt anscheinend ja nichtmal was die standard Library ist.

VS bindet durch die stdafx vieles des C++ standards ein.
11/09/2013 15:08 Schlüsselbein#9
Wohl eher etwas dass du selbst nicht im Ansatz verstehst. Aber was schreibe ich schon, unser TS sollte lieber seinen hochqualifizierten Lehrer seines Informatikunterrichts fragen (nicht wahr, Rainbow?).
11/09/2013 15:10 Tasiro#10
Quote:
Originally Posted by -Rainbow View Post
Wenn du die einzelnen header selbst einbinden möchtest, lösch den header stdafx.h und die präprozessor direktive einfach.
Sieht deine stdafx.h ungefähr so aus?
Code:
#include <cassert>
#include <cctype>
#include <cerrno>
#include <cfenv>
#include <cfloat>
#include <cinttypes>
#include <ciso646>
#include <climits>
#include <clocale>
#include <cmath>
#include <csetjump>
#include <csignal>
#include <cstdarg>
#include <cstdbool>
#include <cstddef>
#include <cstdint>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctgmath>
#include <ctime>
#include <cuchar>
#include <cwchar>
#include <cwctype>
#include <array>
#include <deque>
#include <forward_list>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include <iosfwd>
#include <streambuf>
#include <ios>
#include <ostream>
#include <istream>
#include <iostream>
#include <fstream>
#include <sstream>
#include <iomanip>
#include <atomic>
#include <mutex>
#include <thread>
#include <future>
#include <condition_variable>
#include <algorithm>
#include <iterator>
#include <bitset>
#include <chrono>
#include <locale>
#include <codecvt>
#include <complex>
#include <exception>
#include <stdexcept>
#include <functional>
#include <initializer_list>
#include <memory>
#include <new>
#include <numeric>
#include <random>
#include <ratio>
#include <regex>
#include <string>
#include <system_error>
#include <tuple>
#include <typeindex>
#include <typeinfo>
#include <type_traits>
#include <utility>
#include <valarray>
11/09/2013 15:18 Acin™#11
Quote:
Originally Posted by Schlüsselbein View Post
Wohl eher etwas dass du selbst nicht im Ansatz verstehst. Aber was schreibe ich schon, unser TS sollte lieber seinen hochqualifizierten Lehrer seines Informatikunterrichts fragen (nicht wahr, Rainbow?).
Du musst es ja wissen ;)
Quote:
Originally Posted by Tasiro View Post
Sieht deine stdafx.h ungefähr so aus?
Code:
#include <cassert>
#include <cctype>
#include <cerrno>
#include <cfenv>
#include <cfloat>
#include <cinttypes>
#include <ciso646>
#include <climits>
#include <clocale>
#include <cmath>
#include <csetjump>
#include <csignal>
#include <cstdarg>
#include <cstdbool>
#include <cstddef>
#include <cstdint>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctgmath>
#include <ctime>
#include <cuchar>
#include <cwchar>
#include <cwctype>
#include <array>
#include <deque>
#include <forward_list>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include <iosfwd>
#include <streambuf>
#include <ios>
#include <ostream>
#include <istream>
#include <iostream>
#include <fstream>
#include <sstream>
#include <iomanip>
#include <atomic>
#include <mutex>
#include <thread>
#include <future>
#include <condition_variable>
#include <algorithm>
#include <iterator>
#include <bitset>
#include <chrono>
#include <locale>
#include <codecvt>
#include <complex>
#include <exception>
#include <stdexcept>
#include <functional>
#include <initializer_list>
#include <memory>
#include <new>
#include <numeric>
#include <random>
#include <ratio>
#include <regex>
#include <string>
#include <system_error>
#include <tuple>
#include <typeindex>
#include <typeinfo>
#include <type_traits>
#include <utility>
#include <valarray>
// stdafx.h : Includedatei für Standardsystem-Includedateien
11/09/2013 15:20 Schlüsselbein#12
Okay, ums etwas konkreter zu machen.
Quote:
VS bindet durch die stdafx vieles des C++ standards ein.
Zum Beispiel? Du bist dir ja so sicher, dann wirst du ja sicherlich ein konkretes Beispiel haben, für welches stdafx zwingend benötigt wird (weil sonst ein Teil des C++ Standards fehlt?!).

Quote:
Du weißt anscheinend ja nichtmal was die standard Library ist.
Damit schneidest du dir selber sowas von ins Fleisch. Die Standard Library hat nichts, aber auch gar nichts mit den vorkompilierten Headern zu tun.
11/09/2013 15:30 Acin™#13
Quote:
Originally Posted by Schlüsselbein View Post
Okay, ums etwas konkreter zu machen.

Zum Beispiel? Du bist dir ja so sicher, dann wirst du ja sicherlich ein konkretes Beispiel haben, für welches stdafx zwingend benötigt wird (weil sonst ein Teil des C++ Standards fehlt?!).


Damit schneidest du dir selber sowas von ins Fleisch. Die Standard Library hat nichts, aber auch gar nichts mit den vorkompilierten Headern zu tun.
Der einzige der je über diese vorkompilierten Header (Projekt Start) gesprochen hat, bist du.
11/09/2013 15:44 Schlüsselbein#14
Du weißt aber schon, dass eben das aktivieren der vorkompilierten Header der Grund für die stdafx.h Datei ist?
Und wie bringst du das nun mit der std library in Verbindung? Du hattest ja oben schließlich auf meine Lösung mit dem entfernen der vorkompilierten Headern mit "die vs std lib wird immer eingebunden" geantwortet.
Ich frage mich nun, was die stdlib damit zu tun hat? Klär mich auf, ich bin unwissend und habe leider keinen gottgleichen Informatiklehrer zur Hand.

Kurze Frage abseits des Themas: Ist der User DeinMud zufällig enger mit dir verwandt?
11/09/2013 15:46 MrSm!th#15
Nicht zu vergessen, dass die std Lib eben nicht immer eingebunden ist, was auch völlig ok ist, da man selten die volle Lib benötigt.

Quote:
Originally Posted by -Rainbow View Post
Der einzige der je über diese vorkompilierten Header (Projekt Start) gesprochen hat, bist du.
Geh einfach weg, langsam schlägt das Lachen in Weinen um.
Die Qualität deiner Beiträge ist miserabel und es nervt mich, wie du hier in meiner Sektion Halbwissen verbreitest.