Giriş
Şu satırı dahil ederiz.
Elimizde file_descriptor_sink,file_descriptor_source,array_source gibi stream arayüzünü desteklemeyen nesneler var ise, bu nesneleri sarmalayarak stream olarak kullanabilmemizi sağlar.
STL Algoritmaları
Bu sınıfı STL algoritmaları ile kullanılabilir.
Örnek - std::copy
Şöyle yaparız.
Okuma için kullanılır.Şu satırı dahil ederiz.
Şöyle yaparız. Stream array'i aşınca bad() bitini kaldırır.
Şu satırı dahil ederiz.
#include <boost/iostreams/stream.hpp>
Bu sınıf std::istream& nesnesine çevrilebilir.Elimizde file_descriptor_sink,file_descriptor_source,array_source gibi stream arayüzünü desteklemeyen nesneler var ise, bu nesneleri sarmalayarak stream olarak kullanabilmemizi sağlar.
STL Algoritmaları
Bu sınıfı STL algoritmaları ile kullanılabilir.
Örnek - std::copy
Şöyle yaparız.
template <typename Out>
Out read_file(std::string const& path, Out out) {
io::stream<io::file_source> stream = ...;
...
return out = std::copy(std::istreambuf_iterator<char>{stream}, {}, out);
}
Constructor - array_sourceOkuma için kullanılır.Şu satırı dahil ederiz.
#include <boost/iostreams/device/array.hpp>
Şöyle yaparız.char buf[] = "hello world\nbye world";
bis::array_source source(buf, strlen(buf));
bis::stream<bis::array_source> stream (source);
foo(stream);
Daha sonra bu stream'den okuma yaparız.Şöyle yaparız.void foo(std::istream& is) {
std::string line;
while (getline(is, line)) {
std::cout << " * '" << line << "'\n";
}
}
Constructor - basic_array_sourceŞöyle yaparız. Stream array'i aşınca bad() bitini kaldırır.
bios::basic_array_source<char> source = ...;
bios::stream <bios::basic_array_source<char>> stream (source);
Constructor - file_descriptor_sink
Yazma için kullanılılır. Şu satırı dahil ederiz.
Okuma için kullanılır. Şu satırı dahil ederiz.
Şöyle yaparız.
Yazma için kullanılılır. Şu satırı dahil ederiz.
#include <boost/iostreams/device/file_descriptor.hpp>
Şöyle yaparız.bis::file_descriptor_sink fd_sink = ...;
bis::stream <bis::file_descriptor_sink> stream (fd_sink);
stream << "...";
Constructor - file_descriptor_sourceOkuma için kullanılır. Şu satırı dahil ederiz.
#include <boost/iostreams/device/file_descriptor.hpp>
ÖrnekŞöyle yaparız.
bis::file_descriptor_source fd_source = ...;
bis::stream <bis::file_descriptor_source> stream (fd_source);
std::string str;
while (std::getline(stream, str))
{
...
}
Örnek
C++ ifstream veya wifstream sınıfları wchar_t alan constructor sunmuyor. Şöyle yaparız.
fs::wpath const fname = L"test.xml";
io::file_descriptor_source fd_source (fname);
io::stream<io::file_descriptor_source> stream (fd_source);
Constructor - file_source
Şöyle yaparız.
rdbuf metodu
Şöyle yaparız.Şöyle yaparız.
std::string const path = ...;
ios::stream<ios::file_source> stream;
stream.exceptions (std::ios::badbit | std::ios::eofbit | std::ios::failbit);
stream.open (path, std::ios::binary);
rdbuf metodu
std::istream wrap(is.rdbuf());
Hiç yorum yok:
Yorum Gönder