74 lines
1.8 KiB
C++
74 lines
1.8 KiB
C++
|
#ifndef SIMPLEOSTREAM_HPP
|
||
|
#define SIMPLEOSTREAM_HPP
|
||
|
|
||
|
#include <cstdio> // dla putchar
|
||
|
|
||
|
class SimpleOStream {
|
||
|
public:
|
||
|
SimpleOStream& operator<<(const char* str) {
|
||
|
while (*str) {
|
||
|
putchar(*str++);
|
||
|
}
|
||
|
return *this;
|
||
|
}
|
||
|
|
||
|
SimpleOStream& operator<<(char c) {
|
||
|
putchar(c);
|
||
|
return *this;
|
||
|
}
|
||
|
|
||
|
SimpleOStream& operator<<(int num) {
|
||
|
char buffer[12]; // wystarczająco duży, aby pomieścić liczbę int
|
||
|
snprintf(buffer, sizeof(buffer), "%d", num);
|
||
|
return *this << buffer;
|
||
|
}
|
||
|
|
||
|
SimpleOStream& operator<<(unsigned int num) {
|
||
|
char buffer[12];
|
||
|
snprintf(buffer, sizeof(buffer), "%u", num);
|
||
|
return *this << buffer;
|
||
|
}
|
||
|
|
||
|
SimpleOStream& operator<<(long num) {
|
||
|
char buffer[20]; // wystarczająco duży, aby pomieścić liczbę long
|
||
|
snprintf(buffer, sizeof(buffer), "%ld", num);
|
||
|
return *this << buffer;
|
||
|
}
|
||
|
|
||
|
SimpleOStream& operator<<(unsigned long num) {
|
||
|
char buffer[20];
|
||
|
snprintf(buffer, sizeof(buffer), "%lu", num);
|
||
|
return *this << buffer;
|
||
|
}
|
||
|
|
||
|
SimpleOStream& operator<<(double num) {
|
||
|
char buffer[64]; // wystarczająco duży, aby pomieścić liczbę double
|
||
|
snprintf(buffer, sizeof(buffer), "%f", num);
|
||
|
return *this << buffer;
|
||
|
}
|
||
|
|
||
|
SimpleOStream& operator<<(void* ptr) {
|
||
|
char buffer[20];
|
||
|
snprintf(buffer, sizeof(buffer), "%p", ptr);
|
||
|
return *this << buffer;
|
||
|
}
|
||
|
|
||
|
// Użyj tego operatora do manipulacji takimi jak std::endl
|
||
|
SimpleOStream& operator<<(SimpleOStream& (*manip)(SimpleOStream&)) {
|
||
|
return manip(*this);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
// Manipulator std::endl
|
||
|
SimpleOStream& endl(SimpleOStream& os) {
|
||
|
os << '\n';
|
||
|
fflush(stdout);
|
||
|
return os;
|
||
|
}
|
||
|
|
||
|
// Globalny obiekt dla strumienia wyjściowego
|
||
|
extern SimpleOStream simpleCout;
|
||
|
|
||
|
#endif // SIMPLEOSTREAM_HPP
|
||
|
|