Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Standard C++ for Arduino (port of uClibc++)
C++ Arduino C Other
branch: master
Failed to load latest commit information.
examples more
.gitignore import
Jamfile import
Makefile import more readme fixes
StandardCplusplus.h Enable automatic declaration of cout/cerr. Application must still def…
algorithm Fix std::find() to use operator==, as gcc stdlibc++ does.
algorithm.cpp import
associative_base Fix up 4.7 warnings
associative_base.cpp import
basic_definitions import
bitset import
bitset.cpp import
cassert import
cctype import
cerrno import
cfloat import
char_traits import
char_traits.cpp import
climits import
clocale import
cmath import
complex import
complex.cpp import
csetjmp import
csignal import
cstdarg import
cstddef import
cstdio import
cstdlib import
cstring import
ctime import
cwchar import
cwctype import
del_op.cpp import
del_opnt.cpp import
del_opv.cpp extended new/delete operators now defined by Arduino
del_opvnt.cpp import
deque import
deque.cpp import
eh_alloc.cpp import
eh_globals.cpp import
exception import
exception.cpp import
fstream import
fstream.cpp import
func_exception import
func_exception.cpp import
functional import
initializer_list Added initializer_list and construct vector from one
iomanip import
iomanip.cpp import
ios import
ios.cpp Enable automatic declaration of cout/cerr. Application must still def…
iosfwd import
iostream Enable automatic declaration of cout/cerr. Application must still def…
iostream.cpp import
istream import
istream.cpp import
istream_helpers Added float/double support to the iostreams library.
iterator import
iterator.cpp import
iterator_base import
limits We know limits is not complete
limits.cpp import
list import
list.cpp import
locale import
locale.cpp import
map import
map.cpp import
memory import
new import
new_handler.cpp import
new_op.cpp import
new_opnt.cpp import
new_opv.cpp extended new/delete operators now defined by Arduino
new_opvnt.cpp import
numeric import
numeric.cpp import
ostream Re-implement the removal of prog_char, this time using __FlashStringH…
ostream.cpp import
ostream_helpers Added float/double support to the iostreams library.
queue import
queue.cpp import
serstream import
set import
set.cpp import
sstream import
sstream.cpp import
stack import
stack.cpp import
stdexcept import
stdexcept.cpp import
streambuf import
streambuf.cpp import
string Tweaks to compile without erros and warnings on gcc 4.7.0
string.cpp import
string_iostream import
support import
support.cpp import
system_configuration.h Reduce standard buffer size, uses less memory by default
type_traits import
typeinfo import
typeinfo.cpp import
uartbuf import
unwind-cxx.h import
utility.cpp import
utility.h import
valarray import
valarray.cpp import
vector Added initializer_list and construct vector from one
vector.cpp import

Standard C++ for Arduino

What is this?

This is a straight port of uClibc++ for Arduino. I have cut nothing out and held nothing back. Use with care!

That said, I have used uClibc++'s own internal configuration to pare back un-needed stuff, like support for floats, gratuitous template instantiations and other things. See system_configuration.h for all of those gory details.

Plus I added in Andy Brown's excellent ohserialstream class for managing the HardwareSerial as an ostream.

How do I install it?

This is installed just like a regular Arduino library. Unpack the contents of the distribution into the 'libraries' folder under your sketchbook. For example, my sketchbook is at /home/maniacbug/Source/Arduino, so this library is in /home/maniacbug/Source/Arduino/libraries/StandardCplusplus .

Be sure to reset your Arduino IDE after installing it.

How do I try it out?

From the Arduino IDE, navigate the menus to: File > Examples > StandardCplusplus > string_vector

Upload that, set your serial monitor to 57600 baud, and check the output.

How do I learn more?

The web is your friend. is my personal favorite reference.

Which versions does it work with?

Arduino 1.0 and beyond.

What is the license?

uClibc++ is LGPL, so this port is also. Andy's file is actually CC-BY-SA, however he indicated he'd be releasing it using the 3-clause modified BSD license, so it will be fully compatible with uClibc++.

Something went wrong with that request. Please try again.