Skip to content

Instantly share code, notes, and snippets.

@cmaglie
Last active February 18, 2023 14:27
Show Gist options
  • Save cmaglie/5883185 to your computer and use it in GitHub Desktop.
Save cmaglie/5883185 to your computer and use it in GitHub Desktop.
StringStream class for Arduino
#ifndef _STRING_STREAM_H_INCLUDED_
#define _STRING_STREAM_H_INCLUDED_
#include <Stream.h>
class StringStream : public Stream
{
public:
StringStream(const String &s) : string(s), position(0) { }
// Stream methods
virtual int available() { return string.length() - position; }
virtual int read() { return position < string.length() ? string[position++] : -1; }
virtual int peek() { return position < string.length() ? string[position] : -1; }
virtual void flush() { };
// Print methods
virtual size_t write(uint8_t c) { string += (char)c; };
private:
String &string;
int length;
int position;
};
#endif // _STRING_STREAM_H_INCLUDED_
@arnavb
Copy link

arnavb commented Feb 18, 2018

@sanfx, this is really late, but you would have to implement a operator<< for the class.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment