Bei der Verwendung von printf ()/scanf vs cout/cin?
Teste ich einige Ausschnitte fand ich aus dem web mit g++ aus MinGW. Dies ist der C++ compiler...warum dann tut es richtig kompilieren von C....warum machen die Leute verflechten C und C++.
Ist die konkrete Frage: Ist es O. K., beide zu verwenden in C und C++ und kompilieren unter g++. Wenn die Antwort " ja, das macht mein Leben leicht, wie ich nicht, den code zu modifizieren.
Seltsam genug...um einige C++ zu arbeiten, vor allem wenn man einen string in einen Konstruktor von ifstream es erfordert eine C-Typ-string...
Meine Vermutung wäre, dass da C++ hängt von C-Konstrukten in Zeiten ist, ist O. K zu schreiben, die zwei Sprachen zusammen.
Jedoch als eine Frage von Stil, den Sie sollten sich auf cout
/cin
oder printf
/scanf
.
- C ist im wesentlichen eine Untermenge von C++. Durch die Zeit, die C++ kam heraus, dass es Töne von code in C (noch sind), so konnte man nicht einfach erwarten, dass sich die beiden Sprachen nicht kompatibel.
- Hinweis: wie von C++11, können Sie auch bauen ein
std::ifstream
aus einerconst std::string&
(z.B. siehe Abschnitt 27.9.1.7 der Letzte Entwurf).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es ein paar Merkwürdigkeiten wo
char*
benötigt wird. Sie können die Lücke, die durch die Verwendung der.c_str()
Methode einerstd::string
eins zu bekommen.Für die meisten Teil, die C-Untermenge von C++ kompatibel ist. Genau wie es nicht kompatibel ist wahrscheinlich nicht die Materie für die meisten Teil:
http://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B
Wenn Sie kompilieren Schnipsel C-code für eine C++ - compiler, sicher sein, es zu ändern, verwenden Sie die "c" lib-format in Ihr gehören...zum Beispiel
#include <cstdio>
statt#include <stdio.h>
Ist es schlechte Praxis ist, verwenden Sie einen C-header, statt dessen C++ - äquivalent in C++ (z.B. stdio."h" statt " cstdio)?
Für eine ziemlich sachliche Argumentation von Bjarne sich auf, warum zu vermeiden, scanf, check-out am Anfang dieses Papiers:
http://www2.research.att.com/~bs/new_learning.pdf
Gibt es eine Menge Vorteile mit iostreams anstelle von printf als auch:
'printf' und 'cout' in C++
cout << this
vs.cout << *this
).%.*s
effizient mit streams.cout << "The value of x is " << x << endl;
dann ist es robust mit meinem Wechsel die Stelle der Erklärung derx
von integer, string, jeder benutzerdefinierten Klasse, die iostream-Methoden. Das ist gut, nicht schlecht. Printf verlangt von mir, zu denken, zu gehen und berühren Sie die Zeichenfolge, mit der jede Art änderung, die ich machen könnte, und der schmale Formatierung Sprache kann nicht gemacht werden, erweiterbar. Aus diesen Gründen-Gitter auf meiner ästhetik in einer fundamentalen Ebene weit mehr als die iostream-format modifiers zu tun. [Schulterzucken]%.*s
mit streams? (Fragen kann nicht Schaden 😉 ) das wäre das zweite große problem, wie ich es persönlich umsetzen einertoString()
oder ähnliche Methode intern (es ist nützlich nicht nur für iostreams nach all ein, um eine string-Repräsentation einer Klasse), so dass ich don ' T haben viele Probleme mit den sich ändernden Arten - auch gcc fängt dort Fehler. Mein größtes Problem mit printf ist, dass die standard-vergessen einige wichtige Bezeichner (versuchen zu drucken ptrdiff_t Wert richtig..)Der Sprache C++ erbt viel von seiner Kern-Funktionalität von C. weil C++ abgeleitet wurde von C. C++ - Standard enthält, durch einen Verweis Großteil der C-Standard. Daher können Sie den C++ - compiler, code zu schreiben, mit C-Konstrukte, Idiome und Paradigmen. Dabei wird oft bezeichnet als mit C++ "als besseres C."
Die lange und die kurze von den oben genannten ist ja, Sie können
printf
im C++ - code. Dabei ist ausdrücklich erlaubt, von der Standard.Tun dies aber Häufig vernachlässigen viele Merkmale, die definieren, C++. Ich lasse das Gespräch für eine andere Frage, aber es genügt zu sagen, dass viele Leute werden sagen Sie einfach "Mach das nicht" oder "das ist nicht C++." Dies setzt neben den Gründen, warum Sie möglicherweise nicht verwenden möchten
printf
in einem C++ - Programm oder in der Tat, warum würden Sie wollen. Aber seien Sie versichert, dass es technisch erlaubt.Ja, es ist die feine Mischung der beiden Sprachen. Dies ist üblich, mit code, der begann als C, aber dann wurde mehr und mehr C++ - Funktionen Hinzugefügt (offensichtlich jemand verändert der compiler auf dem Weg).
Allgemein, C-code kompilieren und ausführen mit einem C++ - compiler. Es gibt viele mögliche Ausnahmen, wie zum Beispiel die Verwendung von keywords wie
class
undvirtual
für die Namen der Dinge in C-code oder C entspannt casting-Regeln.Werden Sie oft hören, wie Leute sagen: "Sie sind sehr verschiedene Sprachen". Das ist, weil jeder Programmierung Frage Sie Fragen, hat wahrscheinlich eine andere Antwort je nachdem, welche Sprache Sie verwenden möchten. Allerdings gibt es eine Menge von ähnlichkeiten und rückwärts-Kompatibilität Aspekte.
Wenn Sie C++, dann C++. (
cin
,cout
)Warum
fstream
nimmt c-string Rätsel ich auch.