Flexible - converts snippets, files, and folders from C++ to Python
Fast - tens of thousands of lines converted from C++ to Python per minute
Helpful conversion comments
Excellent educational tool for C++ developers learning Python
Numerous conversion and formatting options
Q: Are the original C++ files altered in any way?
Your existing code is left completely intact. The new
Python files are output to the new location that you specify.
Q: What is the conversion accuracy?
Our accuracy is very high, but there will be
significant adjustments required for all but the most trivial
conversions. There are no direct equivalents for some aspects of C++.
Read the rest of the FAQ to get an idea of a few things that are
not converted. C++ to Python Converter is intended to
reduce the amount of work you'll have to do to convert code to Python,
but it is just the first step.
You should not attempt to convert code that is heavily dependent
on pointer arithmetic or template metaprogramming since these
features are only practical in C++.
Q: What about STL Containers?
C++ to Python Converter converts references to some
STL container types, such as std::vector. The containers that have no clear equivalent
are not converted.
Q: Is C++/CLI code converted?
No. Despite the name, C++/CLI has very little in common with C++.
Q: What about C++ UI code?
The converter does not convert C++ UI types due to
the lack of similarity between these types and Python UI types.
Q: What are the most common adjustments necessary after conversion?
Most C/C++ library function calls are not converted.
However, we do convert a subset of the C-based
string, keyboard I/O, math, and utility function calls, and some of
the C++ keyboard I/O methods, STL-based string class methods,
and some STL containers.
Pointer arithmetic has no good equivalent in Python.
Some pointer and address manipulation may remain in the converted code.
Since Python lacks a preprocessor, all code
dependent on conditional compilation needs to be refactored so
that the functionality can be achieved in other ways.
Python does not allow assignments within expressions, but C++ does (e.g.,
while ((x = y()) > 0) assigns a value to x as part of an
expression). C++ to Python Converter will convert some cases, but will mark other more
complex cases with a "ToDo" comment. You must manually
C++ lambdas are converted to Python expression lambdas only if they
contain a single 'return' statement.
Some reference type comparisons are converted, but you will need to
manually change some equality symbols to "is". The Python
interpreter makes these adjustment requirements obvious.
Template metaprogramming has no good equivalent in Python.
Bit-by-bit copying of objects via the
assignment operator is not the default in Python. We attempt
to detect these cases and convert the assignment to a call to
either the copy constructor (if used in a variable
initialization) or the converted assignment operator overload (which
is converted to a 'copy_from' method) and also provide a 'Warning' comment.
Python does not allow embedded assembly
instructions. These are marked with a comment.
There is no equivalent to friend functions or
friend classes in Python. These are marked with a comment.
Unions and bit fields have no elegant
equivalent in Python. Unions are commented out with a 'todo' note.
A few operators that can be overloaded in C++ cannot be simulated in Python. These are marked with a