Когда использовать printf / scanf против cout / cin?

Я тестирую некоторые фрагменты, которые я нашел в интернете, используя g++ из MinGW. Это компилятор C++...почему тогда он правильно компилирует C....почему люди переплетают C и c++.

конкретный вопрос: Можно ли использовать как C, так и C++ и компилировать под g++. Если ответ "да", это упрощает мою жизнь, поскольку мне не нужно изменять код.

как ни странно...чтобы заставить c++ работать, особенно при передаче строки в конструктор ifstream требует с типом string...

Я предполагаю, что, поскольку C++ зависит от конструкций C временами, это O. K, чтобы написать два языка вместе.

однако, как вопрос стиля вы должны остановиться на cout/cin или printf/scanf.

4 ответов


есть несколько странностей, где Это. Вы можете преодолеть разрыв с помощью .c_str() метод a std::string чтобы получить один.

по большей части, подмножество C C++ совместимо. Точно, как это несовместимо, по большей части не имеет значения:

http://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B

если вы компилируете фрагменты кода C под компилятором c++, обязательно измените его, чтобы использовать "c" формат Либ в вашем распоряжении...например #include <cstdio> вместо #include <stdio.h>

это плохая практика использовать заголовок C вместо его эквивалента C++ в C++ (например, stdio.h вместо cstdio)?

для достаточно аргументированного аргумента от самого Бьярне о том, почему следует избегать сканфа, ознакомьтесь с началом этой статьи:

http://www2.research.att.com / ~bs / new_learning.pdf

есть много преимуществ для использования iostreams вместо printf также:

'printf' против 'cout' в C++


язык C++ наследует большую часть своей основной функциональности от C. Это потому, что C++ был получен из C. стандарт C++ включает в себя, по ссылке большую часть стандарта C. Поэтому вы можете использовать компилятор C++ для написания кода с использованием конструкций C, идиом и парадигм. Это часто называют использованием C++ "как лучшего C."

длинный и короткий из вышеперечисленного-да, вы можете использовать printf в коде C++. Это явно разрешено Норматив.

однако при этом часто игнорируются многие функции, определяющие C++. Я оставлю этот разговор для другого вопроса, но достаточно сказать, что многие люди скажут вам просто "не делайте этого" или "это не C++."Это выделяет причины, почему вы не хотите использовать printf в программе на C++ или действительно, почему вы хотите. Но будьте уверены, что технически это разрешено.


это нормально использовать как C, так и C++ и компилировать под g++.

Да, это нормально, чтобы смешать два языка. Это характерно для кода, который начинался как C, но затем добавлял все больше и больше функций c++ (очевидно, кто-то изменил компилятор по пути).

как правило, код C компилируется и запускается с компилятором c++. Существует множество возможных исключений, таких как использование ключевых слов, таких как class и virtual для имен вещей в Код С, или расслабленные правила кастинга С.

вы часто слышите, как люди говорят "они очень разные языки". Это потому, что любой Программирование Вопрос вы спрашиваете, вероятно, имеет другой ответ в зависимости от того, какой язык вы пытаетесь использовать. Однако, есть много сходства и совместимость аспектах.


Если вы используете C++, то используйте C++. (cin,cout)
Почему?--2--> принимает строку c головоломки меня тоже.