Wann sollte printf / scanf vs cout / cin verwendet werden?

8

Ich teste einige Auszüge, die ich mit g ++ von MinGW im Web gefunden habe. Das ist der C ++ - Compiler ... warum kompiliert er dann C ... warum verschmelzen die Leute C und C ++?

Die konkrete Frage lautet: Ist es O.K. um sowohl C als auch C ++ zu verwenden und unter g ++ zu kompilieren. Wenn die Antwort ja ist, macht dies mein Leben einfach, da ich den Code nicht ändern muss.

Seltsamerweise ... um C ++ zum Laufen zu bringen, besonders wenn man eine Zeichenkette an einen ifstream-Konstruktor übergibt, benötigt es eine C-Zeichenkette ...

Meine Annahme wäre, dass, weil C ++ zu bestimmten Zeiten von C-Konstrukten abhängig ist, O.K die zwei Sprachen zusammen schreiben soll.

Aus Gründen des Stils sollten Sie jedoch auf cout / cin oder printf / scanf setzen.

    
HostileFork 15.10.2011, 19:22
quelle

4 Antworten

5

Es gibt einige Besonderheiten, bei denen char* benötigt wird. Sie können die Lücke überbrücken, indem Sie die .c_str() -Methode von std::string verwenden, um eine zu erhalten.

In den meisten Fällen ist die C-Untergruppe von C ++ kompatibel. Wie genau es nicht kompatibel ist, spielt wahrscheinlich keine Rolle:

Ссылка

Wenn Sie C-Code-Codeschnipsel unter einem C ++ - Compiler kompilieren, stellen Sie sicher, dass Sie das lib-Format "c" in Ihren Includes verwenden ... zum Beispiel #include <cstdio> anstelle von #include <stdio.h>

Ist es eine schlechte Übung, einen C-Header anstelle von C ++ in C ++ zu verwenden (zB stdio.h anstelle von cstdio)?

Zu einem recht begründeten Argument von Bjarne selbst, warum man scanf vermeiden sollte, siehe den Anfang dieses Artikels:

Ссылка

Es gibt viele Vorteile für die Verwendung von iostreams anstelle von printf:

'printf' vs. 'cout' in C ++

    
HostileFork 15.10.2011, 19:35
quelle
3

Die C ++ - Sprache erbt einen Großteil ihrer Kernfunktionalität von C. Das liegt daran, dass C ++ von C abgeleitet wurde. Der C ++ - Standard enthält durch Verweis auf viele der C-Standards. Daher können Sie den C ++ - Compiler verwenden, um Code mit C-Konstrukten, Idiomen und Paradigmen zu schreiben. Dies wird oft als Verwendung von C ++ "als ein besseres C" bezeichnet.

Die lange und die kurze der obigen ist ja, Sie können printf in C ++ Code verwenden. Dies wird ausdrücklich durch den Standard erlaubt.

Dies wird jedoch viele der Funktionen, die C ++ definieren, oft vernachlässigen. Ich werde diese Konversation für eine andere Frage verlassen, aber es genügt zu sagen, dass viele Leute Ihnen einfach sagen "Tu das nicht" oder "Das ist nicht C ++". Dies legt die Gründe beiseite, warum Sie printf in einem C ++ - Programm nicht verwenden sollten oder warum Sie das wirklich wollen. Aber seien Sie versichert, dass es technisch erlaubt ist.

    
John Dibling 15.10.2011 19:40
quelle
2
  

Ist es O.K. Verwenden Sie sowohl C als auch C ++ und kompilieren Sie unter g ++.

Ja, es ist in Ordnung, die zwei Sprachen zu mischen. Dies ist üblich mit Code, der als C anfing, aber dann wurden immer mehr C ++ - Funktionen hinzugefügt (offensichtlich hat jemand den Compiler auf dem Weg geändert).

Im Allgemeinen wird C-Code kompiliert und mit einem C ++ - Compiler ausgeführt. Es gibt viele mögliche Ausnahmen, wie die Verwendung von Schlüsselwörtern wie class und virtual für Namen von Dingen in C-Code oder C's lockere Casting-Regeln.

Man hört oft Leute sagen "sie sind sehr unterschiedliche Sprachen". Das liegt daran, dass jede Programmierfrage , die Sie fragen, wahrscheinlich eine andere Antwort hat, je nachdem, welche Sprache Sie verwenden möchten. Es gibt jedoch viele Ähnlichkeiten und Abwärtskompatibilitäten.

    
Greg Hewgill 15.10.2011 19:34
quelle
0

Wenn Sie C ++ verwenden, verwenden Sie C ++. ( cin , cout )
Warum fstream nimmt auch c string puzzles mich.

    
Dani 15.10.2011 19:30
quelle

Tags und Links