Когда использовать 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>
для достаточно аргументированного аргумента от самого Бьярне о том, почему следует избегать сканфа, ознакомьтесь с началом этой статьи:
http://www2.research.att.com / ~bs / new_learning.pdf
есть много преимуществ для использования iostreams вместо printf также:
язык 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 головоломки меня тоже.